585
586 protected:
587 void flush();
588
589 public:
590 // When true is returned, it is unsafe to remove this nmethod even if
591 // it is a zombie, since the VM or the ServiceThread might still be
592 // using it.
593 bool is_locked_by_vm() const { return _lock_count >0; }
594
595 // See comment at definition of _last_seen_on_stack
596 void mark_as_seen_on_stack();
597 bool can_convert_to_zombie();
598
599 // Evolution support. We make old (discarded) compiled methods point to new Method*s.
600 void set_method(Method* method) { _method = method; }
601
602 #if INCLUDE_JVMCI
603 oop jvmci_installed_code() { return _jvmci_installed_code ; }
604 char* jvmci_installed_code_name(char* buf, size_t buflen);
605 void set_jvmci_installed_code(oop installed_code) { _jvmci_installed_code = installed_code; }
606 void maybe_invalidate_installed_code();
607 oop speculation_log() { return _speculation_log ; }
608 void set_speculation_log(oop speculation_log) { _speculation_log = speculation_log; }
609 #endif
610
611 // GC support
612 void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred);
613 // The parallel versions are used by G1.
614 bool do_unloading_parallel(BoolObjectClosure* is_alive, bool unloading_occurred);
615 void do_unloading_parallel_postponed(BoolObjectClosure* is_alive, bool unloading_occurred);
616
617 private:
618 // Unload a nmethod if the *root object is dead.
619 bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred);
620 bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive, bool unloading_occurred);
621
622 public:
623 void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map,
624 OopClosure* f);
625 void oops_do(OopClosure* f) { oops_do(f, false); }
|
585
586 protected:
587 void flush();
588
589 public:
590 // When true is returned, it is unsafe to remove this nmethod even if
591 // it is a zombie, since the VM or the ServiceThread might still be
592 // using it.
593 bool is_locked_by_vm() const { return _lock_count >0; }
594
595 // See comment at definition of _last_seen_on_stack
596 void mark_as_seen_on_stack();
597 bool can_convert_to_zombie();
598
599 // Evolution support. We make old (discarded) compiled methods point to new Method*s.
600 void set_method(Method* method) { _method = method; }
601
602 #if INCLUDE_JVMCI
603 oop jvmci_installed_code() { return _jvmci_installed_code ; }
604 char* jvmci_installed_code_name(char* buf, size_t buflen);
605 void clear_jvmci_installed_code();
606 void maybe_invalidate_installed_code();
607 oop speculation_log() { return _speculation_log ; }
608 void set_speculation_log(oop speculation_log) { _speculation_log = speculation_log; }
609 #endif
610
611 // GC support
612 void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred);
613 // The parallel versions are used by G1.
614 bool do_unloading_parallel(BoolObjectClosure* is_alive, bool unloading_occurred);
615 void do_unloading_parallel_postponed(BoolObjectClosure* is_alive, bool unloading_occurred);
616
617 private:
618 // Unload a nmethod if the *root object is dead.
619 bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred);
620 bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive, bool unloading_occurred);
621
622 public:
623 void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map,
624 OopClosure* f);
625 void oops_do(OopClosure* f) { oops_do(f, false); }
|