< prev index next >

src/share/vm/code/nmethod.hpp

Print this page




 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   oop speculation_log() { return _speculation_log ; }
 607   void set_speculation_log(oop speculation_log) { _speculation_log = speculation_log;  }
 608 #endif
 609 
 610   // GC support
 611   void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred);
 612   //  The parallel versions are used by G1.
 613   bool do_unloading_parallel(BoolObjectClosure* is_alive, bool unloading_occurred);
 614   void do_unloading_parallel_postponed(BoolObjectClosure* is_alive, bool unloading_occurred);
 615 
 616  private:
 617   //  Unload a nmethod if the *root object is dead.
 618   bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred);
 619   bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive, bool unloading_occurred);
 620 
 621  public:
 622   void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map,
 623                                      OopClosure* f);
 624   void oops_do(OopClosure* f) { oops_do(f, false); }
 625   void oops_do(OopClosure* f, bool allow_zombie);




 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); }
 626   void oops_do(OopClosure* f, bool allow_zombie);


< prev index next >