mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8209189: Make CompiledMethod::do_unloading more concurrent
Reviewed-by: kvn, coleenp
This commit is contained in:
parent
97d3dc7902
commit
25f14cd757
15 changed files with 309 additions and 447 deletions
|
@ -323,6 +323,8 @@ class nmethod : public CompiledMethod {
|
|||
bool is_zombie() const { return _state == zombie; }
|
||||
bool is_unloaded() const { return _state == unloaded; }
|
||||
|
||||
virtual void do_unloading(bool unloading_occurred);
|
||||
|
||||
#if INCLUDE_RTM_OPT
|
||||
// rtm state accessing and manipulating
|
||||
RTMState rtm_state() const { return _rtm_state; }
|
||||
|
@ -349,7 +351,7 @@ class nmethod : public CompiledMethod {
|
|||
return _state;
|
||||
}
|
||||
|
||||
void make_unloaded(oop cause);
|
||||
void make_unloaded();
|
||||
|
||||
bool has_dependencies() { return dependencies_size() != 0; }
|
||||
void flush_dependencies(bool delete_immediately);
|
||||
|
@ -483,20 +485,6 @@ public:
|
|||
public:
|
||||
#endif
|
||||
|
||||
protected:
|
||||
virtual bool do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive);
|
||||
#if INCLUDE_JVMCI
|
||||
// See comment for _jvmci_installed_code_triggers_invalidation field.
|
||||
// Returns whether this nmethod was unloaded.
|
||||
virtual bool do_unloading_jvmci();
|
||||
#endif
|
||||
|
||||
private:
|
||||
bool do_unloading_scopes(BoolObjectClosure* is_alive);
|
||||
// Unload a nmethod if the *root object is dead.
|
||||
bool can_unload(BoolObjectClosure* is_alive, oop* root);
|
||||
bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive);
|
||||
|
||||
public:
|
||||
void oops_do(OopClosure* f) { oops_do(f, false); }
|
||||
void oops_do(OopClosure* f, bool allow_zombie);
|
||||
|
@ -555,7 +543,7 @@ public:
|
|||
// Logging
|
||||
void log_identity(xmlStream* log) const;
|
||||
void log_new_nmethod() const;
|
||||
void log_state_change(oop cause = NULL) const;
|
||||
void log_state_change() const;
|
||||
|
||||
// Prints block-level comments, including nmethod specific block labels:
|
||||
virtual void print_block_comment(outputStream* stream, address block_begin) const {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue