585 // Only NMethodSweeper class is expected to use this. NMethodSweeper is not
586 // expected to use any other private methods/data in this class.
587
588 protected:
589 void flush();
590
591 public:
592 // When true is returned, it is unsafe to remove this nmethod even if
593 // it is a zombie, since the VM or the ServiceThread might still be
594 // using it.
595 bool is_locked_by_vm() const { return _lock_count >0; }
596
597 // See comment at definition of _last_seen_on_stack
598 void mark_as_seen_on_stack();
599 bool can_not_entrant_be_converted();
600
601 // Evolution support. We make old (discarded) compiled methods point to new Method*s.
602 void set_method(Method* method) { _method = method; }
603
604 // GC support
605 void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred);
606 // The parallel versions are used by G1.
607 bool do_unloading_parallel(BoolObjectClosure* is_alive, bool unloading_occurred);
608 void do_unloading_parallel_postponed(BoolObjectClosure* is_alive, bool unloading_occurred);
609 // Unload a nmethod if the *root object is dead.
610 bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred);
611
612 void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map,
613 OopClosure* f);
614 void oops_do(OopClosure* f) { oops_do(f, false); }
615 void oops_do(OopClosure* f, bool allow_zombie);
616 bool detect_scavenge_root_oops();
617 void verify_scavenge_root_oops() PRODUCT_RETURN;
618
619 bool test_set_oops_do_mark();
620 static void oops_do_marking_prologue();
621 static void oops_do_marking_epilogue();
622 static bool oops_do_marking_is_active() { return _oops_do_mark_nmethods != NULL; }
623 bool test_oops_do_mark() { return _oops_do_mark_link != NULL; }
624
|
585 // Only NMethodSweeper class is expected to use this. NMethodSweeper is not
586 // expected to use any other private methods/data in this class.
587
588 protected:
589 void flush();
590
591 public:
592 // When true is returned, it is unsafe to remove this nmethod even if
593 // it is a zombie, since the VM or the ServiceThread might still be
594 // using it.
595 bool is_locked_by_vm() const { return _lock_count >0; }
596
597 // See comment at definition of _last_seen_on_stack
598 void mark_as_seen_on_stack();
599 bool can_not_entrant_be_converted();
600
601 // Evolution support. We make old (discarded) compiled methods point to new Method*s.
602 void set_method(Method* method) { _method = method; }
603
604 // GC support
605 bool stub_contains_dead_metadata(BoolObjectClosure* is_alive, address stub);
606 void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred);
607 // The parallel versions are used by G1.
608 bool do_unloading_parallel(BoolObjectClosure* is_alive, bool unloading_occurred);
609 void do_unloading_parallel_postponed(BoolObjectClosure* is_alive, bool unloading_occurred);
610 // Unload a nmethod if the *root object is dead.
611 bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred);
612
613 void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map,
614 OopClosure* f);
615 void oops_do(OopClosure* f) { oops_do(f, false); }
616 void oops_do(OopClosure* f, bool allow_zombie);
617 bool detect_scavenge_root_oops();
618 void verify_scavenge_root_oops() PRODUCT_RETURN;
619
620 bool test_set_oops_do_mark();
621 static void oops_do_marking_prologue();
622 static void oops_do_marking_epilogue();
623 static bool oops_do_marking_is_active() { return _oops_do_mark_nmethods != NULL; }
624 bool test_oops_do_mark() { return _oops_do_mark_link != NULL; }
625
|