560 // Verify and count cached icholder relocations.
561 int verify_icholder_relocations();
562 // Check that all metadata is still alive
563 void verify_metadata_loaders(address low_boundary, BoolObjectClosure* is_alive);
564
565 // unlink and deallocate this nmethod
566 // Only NMethodSweeper class is expected to use this. NMethodSweeper is not
567 // expected to use any other private methods/data in this class.
568
569 protected:
570 void flush();
571
572 public:
573 // When true is returned, it is unsafe to remove this nmethod even if
574 // it is a zombie, since the VM or the ServiceThread might still be
575 // using it.
576 bool is_locked_by_vm() const { return _lock_count >0; }
577
578 // See comment at definition of _last_seen_on_stack
579 void mark_as_seen_on_stack();
580 bool can_not_entrant_be_converted();
581
582 // Evolution support. We make old (discarded) compiled methods point to new Method*s.
583 void set_method(Method* method) { _method = method; }
584
585 // GC support
586 void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred);
587 // The parallel versions are used by G1.
588 bool do_unloading_parallel(BoolObjectClosure* is_alive, bool unloading_occurred);
589 void do_unloading_parallel_postponed(BoolObjectClosure* is_alive, bool unloading_occurred);
590
591 private:
592 // Unload a nmethod if the *root object is dead.
593 bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred);
594 bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive, bool unloading_occurred);
595
596 public:
597 void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map,
598 OopClosure* f);
599 void oops_do(OopClosure* f) { oops_do(f, false); }
600 void oops_do(OopClosure* f, bool allow_zombie);
|
560 // Verify and count cached icholder relocations.
561 int verify_icholder_relocations();
562 // Check that all metadata is still alive
563 void verify_metadata_loaders(address low_boundary, BoolObjectClosure* is_alive);
564
565 // unlink and deallocate this nmethod
566 // Only NMethodSweeper class is expected to use this. NMethodSweeper is not
567 // expected to use any other private methods/data in this class.
568
569 protected:
570 void flush();
571
572 public:
573 // When true is returned, it is unsafe to remove this nmethod even if
574 // it is a zombie, since the VM or the ServiceThread might still be
575 // using it.
576 bool is_locked_by_vm() const { return _lock_count >0; }
577
578 // See comment at definition of _last_seen_on_stack
579 void mark_as_seen_on_stack();
580 bool can_convert_to_zombie();
581
582 // Evolution support. We make old (discarded) compiled methods point to new Method*s.
583 void set_method(Method* method) { _method = method; }
584
585 // GC support
586 void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred);
587 // The parallel versions are used by G1.
588 bool do_unloading_parallel(BoolObjectClosure* is_alive, bool unloading_occurred);
589 void do_unloading_parallel_postponed(BoolObjectClosure* is_alive, bool unloading_occurred);
590
591 private:
592 // Unload a nmethod if the *root object is dead.
593 bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred);
594 bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive, bool unloading_occurred);
595
596 public:
597 void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map,
598 OopClosure* f);
599 void oops_do(OopClosure* f) { oops_do(f, false); }
600 void oops_do(OopClosure* f, bool allow_zombie);
|