< prev index next >

src/hotspot/share/code/nmethod.hpp

Print this page
*** 469,81 ***
    // Sets this nmethod as strongly claimed (as part of N|SD -> X|SD and N|SR -> X|SD
    // transitions).
    void oops_do_set_strong_done(nmethod* old_head);
  
  public:
!   enum class ChangeReason : u1 {
!     C1_codepatch,
!     C1_deoptimize,
!     C1_deoptimize_for_patching,
!     C1_predicate_failed_trap,
!     CI_replay,
!     JVMCI_invalidate_nmethod,
!     JVMCI_invalidate_nmethod_mirror,
!     JVMCI_materialize_virtual_object,
!     JVMCI_new_installation,
!     JVMCI_register_method,
!     JVMCI_replacing_with_new_code,
!     JVMCI_reprofile,
!     marked_for_deoptimization,
!     missing_exception_handler,
!     not_used,
!     OSR_invalidation_back_branch,
!     OSR_invalidation_for_compiling_with_C1,
!     OSR_invalidation_of_lower_level,
!     set_native_function,
!     uncommon_trap,
!     whitebox_deoptimization,
!     zombie,
    };
  
  
!   static const char* change_reason_to_string(ChangeReason change_reason) {
!     switch (change_reason) {
!       case ChangeReason::C1_codepatch:
          return "C1 code patch";
!       case ChangeReason::C1_deoptimize:
          return "C1 deoptimized";
!       case ChangeReason::C1_deoptimize_for_patching:
          return "C1 deoptimize for patching";
!       case ChangeReason::C1_predicate_failed_trap:
          return "C1 predicate failed trap";
!       case ChangeReason::CI_replay:
          return "CI replay";
!       case ChangeReason::JVMCI_invalidate_nmethod:
!         return "JVMCI invalidate nmethod";
!       case ChangeReason::JVMCI_invalidate_nmethod_mirror:
-         return "JVMCI invalidate nmethod mirror";
-       case ChangeReason::JVMCI_materialize_virtual_object:
          return "JVMCI materialize virtual object";
!       case ChangeReason::JVMCI_new_installation:
!         return "JVMCI new installation";
!       case ChangeReason::JVMCI_register_method:
-         return "JVMCI register method";
-       case ChangeReason::JVMCI_replacing_with_new_code:
-         return "JVMCI replacing with new code";
-       case ChangeReason::JVMCI_reprofile:
          return "JVMCI reprofile";
!       case ChangeReason::marked_for_deoptimization:
          return "marked for deoptimization";
!       case ChangeReason::missing_exception_handler:
          return "missing exception handler";
!       case ChangeReason::not_used:
          return "not used";
!       case ChangeReason::OSR_invalidation_back_branch:
          return "OSR invalidation back branch";
!       case ChangeReason::OSR_invalidation_for_compiling_with_C1:
          return "OSR invalidation for compiling with C1";
!       case ChangeReason::OSR_invalidation_of_lower_level:
          return "OSR invalidation of lower level";
!       case ChangeReason::set_native_function:
          return "set native function";
!       case ChangeReason::uncommon_trap:
          return "uncommon trap";
!       case ChangeReason::whitebox_deoptimization:
          return "whitebox deoptimization";
!       case ChangeReason::zombie:
          return "zombie";
        default: {
          assert(false, "Unhandled reason");
          return "Unknown";
        }
--- 469,78 ---
    // Sets this nmethod as strongly claimed (as part of N|SD -> X|SD and N|SR -> X|SD
    // transitions).
    void oops_do_set_strong_done(nmethod* old_head);
  
  public:
!   // If you change anything in this enum please patch
!   // vmStructs_jvmci.cpp accordingly.
!   enum class InvalidationReason : s1 {
!     NOT_INVALIDATED = -1,
!     C1_CODEPATCH,
!     C1_DEOPTIMIZE,
!     C1_DEOPTIMIZE_FOR_PATCHING,
!     C1_PREDICATE_FAILED_TRAP,
!     CI_REPLAY,
!     UNLOADING,
!     UNLOADING_COLD,
!     JVMCI_INVALIDATE,
!     JVMCI_MATERIALIZE_VIRTUAL_OBJECT,
!     JVMCI_REPLACED_WITH_NEW_CODE,
!     JVMCI_REPROFILE,
!     MARKED_FOR_DEOPTIMIZATION,
!     MISSING_EXCEPTION_HANDLER,
!     NOT_USED,
!     OSR_INVALIDATION_BACK_BRANCH,
!     OSR_INVALIDATION_FOR_COMPILING_WITH_C1,
!     OSR_INVALIDATION_OF_LOWER_LEVEL,
!     SET_NATIVE_FUNCTION,
!     UNCOMMON_TRAP,
+     WHITEBOX_DEOPTIMIZATION,
+     ZOMBIE,
+     INVALIDATION_REASONS_COUNT
    };
  
  
!   static const char* invalidation_reason_to_string(InvalidationReason invalidation_reason) {
!     switch (invalidation_reason) {
!       case InvalidationReason::C1_CODEPATCH:
          return "C1 code patch";
!       case InvalidationReason::C1_DEOPTIMIZE:
          return "C1 deoptimized";
!       case InvalidationReason::C1_DEOPTIMIZE_FOR_PATCHING:
          return "C1 deoptimize for patching";
!       case InvalidationReason::C1_PREDICATE_FAILED_TRAP:
          return "C1 predicate failed trap";
!       case InvalidationReason::CI_REPLAY:
          return "CI replay";
!       case InvalidationReason::JVMCI_INVALIDATE:
!         return "JVMCI invalidate";
!       case InvalidationReason::JVMCI_MATERIALIZE_VIRTUAL_OBJECT:
          return "JVMCI materialize virtual object";
!       case InvalidationReason::JVMCI_REPLACED_WITH_NEW_CODE:
!         return "JVMCI replaced with new code";
!       case InvalidationReason::JVMCI_REPROFILE:
          return "JVMCI reprofile";
!       case InvalidationReason::MARKED_FOR_DEOPTIMIZATION:
          return "marked for deoptimization";
!       case InvalidationReason::MISSING_EXCEPTION_HANDLER:
          return "missing exception handler";
!       case InvalidationReason::NOT_USED:
          return "not used";
!       case InvalidationReason::OSR_INVALIDATION_BACK_BRANCH:
          return "OSR invalidation back branch";
!       case InvalidationReason::OSR_INVALIDATION_FOR_COMPILING_WITH_C1:
          return "OSR invalidation for compiling with C1";
!       case InvalidationReason::OSR_INVALIDATION_OF_LOWER_LEVEL:
          return "OSR invalidation of lower level";
!       case InvalidationReason::SET_NATIVE_FUNCTION:
          return "set native function";
!       case InvalidationReason::UNCOMMON_TRAP:
          return "uncommon trap";
!       case InvalidationReason::WHITEBOX_DEOPTIMIZATION:
          return "whitebox deoptimization";
!       case InvalidationReason::ZOMBIE:
          return "zombie";
        default: {
          assert(false, "Unhandled reason");
          return "Unknown";
        }

*** 710,12 ***
    }
    // Make the nmethod non entrant. The nmethod will continue to be
    // alive.  It is used when an uncommon trap happens.  Returns true
    // if this thread changed the state of the nmethod or false if
    // another thread performed the transition.
!   bool  make_not_entrant(ChangeReason change_reason);
!   bool  make_not_used() { return make_not_entrant(ChangeReason::not_used); }
  
    bool  is_marked_for_deoptimization() const { return deoptimization_status() != not_marked; }
    bool  has_been_deoptimized() const { return deoptimization_status() == deoptimize_done; }
    void  set_deoptimized_done();
  
--- 707,12 ---
    }
    // Make the nmethod non entrant. The nmethod will continue to be
    // alive.  It is used when an uncommon trap happens.  Returns true
    // if this thread changed the state of the nmethod or false if
    // another thread performed the transition.
!   bool  make_not_entrant(InvalidationReason invalidation_reason);
!   bool  make_not_used() { return make_not_entrant(InvalidationReason::NOT_USED); }
  
    bool  is_marked_for_deoptimization() const { return deoptimization_status() != not_marked; }
    bool  has_been_deoptimized() const { return deoptimization_status() == deoptimize_done; }
    void  set_deoptimized_done();
  

*** 1024,11 ***
    void print_on_with_msg(outputStream* st, const char* msg) const;
  
    // Logging
    void log_identity(xmlStream* log) const;
    void log_new_nmethod() const;
!   void log_state_change(ChangeReason change_reason) const;
  
    // Prints block-level comments, including nmethod specific block labels:
    void print_nmethod_labels(outputStream* stream, address block_begin, bool print_section_labels=true) const;
    const char* nmethod_section_label(address pos) const;
  
--- 1021,11 ---
    void print_on_with_msg(outputStream* st, const char* msg) const;
  
    // Logging
    void log_identity(xmlStream* log) const;
    void log_new_nmethod() const;
!   void log_state_change(InvalidationReason invalidation_reason) const;
  
    // Prints block-level comments, including nmethod specific block labels:
    void print_nmethod_labels(outputStream* stream, address block_begin, bool print_section_labels=true) const;
    const char* nmethod_section_label(address pos) const;
  
< prev index next >