482 |
482 |
483 public: |
483 public: |
484 #endif |
484 #endif |
485 |
485 |
486 protected: |
486 protected: |
487 virtual bool do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive, bool unloading_occurred); |
487 virtual bool do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive); |
488 #if INCLUDE_JVMCI |
488 #if INCLUDE_JVMCI |
489 // See comment for _jvmci_installed_code_triggers_unloading field. |
489 // See comment for _jvmci_installed_code_triggers_unloading field. |
490 // Returns whether this nmethod was unloaded. |
490 // Returns whether this nmethod was unloaded. |
491 virtual bool do_unloading_jvmci(bool unloading_occurred); |
491 virtual bool do_unloading_jvmci(); |
492 #endif |
492 #endif |
493 |
493 |
494 private: |
494 private: |
495 bool do_unloading_scopes(BoolObjectClosure* is_alive, bool unloading_occurred); |
495 bool do_unloading_scopes(BoolObjectClosure* is_alive); |
496 // Unload a nmethod if the *root object is dead. |
496 // Unload a nmethod if the *root object is dead. |
497 bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred); |
497 bool can_unload(BoolObjectClosure* is_alive, oop* root); |
498 bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive, bool unloading_occurred); |
498 bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive); |
499 |
499 |
500 public: |
500 public: |
501 void oops_do(OopClosure* f) { oops_do(f, false); } |
501 void oops_do(OopClosure* f) { oops_do(f, false); } |
502 void oops_do(OopClosure* f, bool allow_zombie); |
502 void oops_do(OopClosure* f, bool allow_zombie); |
503 bool detect_scavenge_root_oops(); |
503 bool detect_scavenge_root_oops(); |