src/hotspot/share/code/nmethod.hpp
changeset 51473 871581ff5ce5
parent 50416 ef980b9ac191
child 52385 5c679ec60888
equal deleted inserted replaced
51472:eb97d1a319f9 51473:871581ff5ce5
    76   // will be false if the referent is initialized to a
    76   // will be false if the referent is initialized to a
    77   // HotSpotNMethod object whose isDefault field is true.
    77   // HotSpotNMethod object whose isDefault field is true.
    78   // That is, installed code other than a "default"
    78   // That is, installed code other than a "default"
    79   // HotSpotNMethod causes nmethod unloading.
    79   // HotSpotNMethod causes nmethod unloading.
    80   // This field is ignored once _jvmci_installed_code is NULL.
    80   // This field is ignored once _jvmci_installed_code is NULL.
    81   bool _jvmci_installed_code_triggers_unloading;
    81   bool _jvmci_installed_code_triggers_invalidation;
    82 #endif
    82 #endif
    83 
    83 
    84   // To support simple linked-list chaining of nmethods:
    84   // To support simple linked-list chaining of nmethods:
    85   nmethod*  _osr_link;         // from InstanceKlass::osr_nmethods_head
    85   nmethod*  _osr_link;         // from InstanceKlass::osr_nmethods_head
    86 
    86 
   454   oop jvmci_installed_code();
   454   oop jvmci_installed_code();
   455 
   455 
   456   // Copies the value of the name field in the InstalledCode
   456   // Copies the value of the name field in the InstalledCode
   457   // object (if any) associated with this nmethod into buf.
   457   // object (if any) associated with this nmethod into buf.
   458   // Returns the value of buf if it was updated otherwise NULL.
   458   // Returns the value of buf if it was updated otherwise NULL.
   459   char* jvmci_installed_code_name(char* buf, size_t buflen);
   459   char* jvmci_installed_code_name(char* buf, size_t buflen) const;
   460 
   460 
   461   // Updates the state of the InstalledCode (if any) associated with
   461   // Updates the state of the InstalledCode (if any) associated with
   462   // this nmethod based on the current value of _state.
   462   // this nmethod based on the current value of _state.
   463   void maybe_invalidate_installed_code();
   463   void maybe_invalidate_installed_code();
   464 
   464 
   484 #endif
   484 #endif
   485 
   485 
   486  protected:
   486  protected:
   487   virtual bool do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive);
   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_invalidation field.
   490   // Returns whether this nmethod was unloaded.
   490   // Returns whether this nmethod was unloaded.
   491   virtual bool do_unloading_jvmci();
   491   virtual bool do_unloading_jvmci();
   492 #endif
   492 #endif
   493 
   493 
   494  private:
   494  private:
   553   void print_on(outputStream* st, const char* msg) const;
   553   void print_on(outputStream* st, const char* msg) const;
   554 
   554 
   555   // Logging
   555   // Logging
   556   void log_identity(xmlStream* log) const;
   556   void log_identity(xmlStream* log) const;
   557   void log_new_nmethod() const;
   557   void log_new_nmethod() const;
   558   void log_state_change() const;
   558   void log_state_change(oop cause = NULL) const;
   559 
   559 
   560   // Prints block-level comments, including nmethod specific block labels:
   560   // Prints block-level comments, including nmethod specific block labels:
   561   virtual void print_block_comment(outputStream* stream, address block_begin) const {
   561   virtual void print_block_comment(outputStream* stream, address block_begin) const {
   562     print_nmethod_labels(stream, block_begin);
   562     print_nmethod_labels(stream, block_begin);
   563     CodeBlob::print_block_comment(stream, block_begin);
   563     CodeBlob::print_block_comment(stream, block_begin);