Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/runtime/deoptimization.hpp
          +++ new/src/share/vm/runtime/deoptimization.hpp
↓ open down ↓ 39 lines elided ↑ open up ↑
  40   40      Reason_many = -1,             // indicates presence of several reasons
  41   41      Reason_none = 0,              // indicates absence of a relevant deopt.
  42   42      // Next 7 reasons are recorded per bytecode in DataLayout::trap_bits
  43   43      Reason_null_check,            // saw unexpected null or zero divisor (@bci)
  44   44      Reason_null_assert,           // saw unexpected non-null or non-zero (@bci)
  45   45      Reason_range_check,           // saw unexpected array index (@bci)
  46   46      Reason_class_check,           // saw unexpected object class (@bci)
  47   47      Reason_array_check,           // saw unexpected array class (aastore @bci)
  48   48      Reason_intrinsic,             // saw unexpected operand to intrinsic (@bci)
  49   49      Reason_bimorphic,             // saw unexpected object class in bimorphic inlining (@bci)
       50 +    Reason_unhandled,             // arbitrary compiler limitation
       51 +
  50   52  
  51   53      Reason_unloaded,              // unloaded class or constant pool entry
  52   54      Reason_uninitialized,         // bad class state (uninitialized)
  53   55      Reason_unreached,             // code is not reached, compiler
  54      -    Reason_unhandled,             // arbitrary compiler limitation
  55   56      Reason_constraint,            // arbitrary runtime constraint violated
  56   57      Reason_div0_check,            // a null_check due to division by zero
  57   58      Reason_age,                   // nmethod too old; tier threshold reached
  58   59      Reason_predicate,             // compiler generated predicate failed
  59   60      Reason_loop_limit_check,      // compiler generated loop limits check failed
  60   61      Reason_LIMIT,
  61   62      // Note:  Keep this enum in sync. with _trap_reason_name.
  62      -    Reason_RECORDED_LIMIT = Reason_bimorphic  // some are not recorded per bc
  63      -    // Note:  Reason_RECORDED_LIMIT should be < 8 to fit into 3 bits of
       63 +    Reason_RECORDED_LIMIT = Reason_unhandled  // some are not recorded per bc
       64 +    // Note:  Reason_RECORDED_LIMIT should be < 16 to fit into 4 bits of
  64   65      // DataLayout::trap_bits.  This dependency is enforced indirectly
  65   66      // via asserts, to avoid excessive direct header-to-header dependencies.
  66   67      // See Deoptimization::trap_state_reason and class DataLayout.
  67   68    };
  68   69  
  69   70    // What action must be taken by the runtime?
  70   71    enum DeoptAction {
  71   72      Action_none,                  // just interpret, do not invalidate nmethod
  72   73      Action_maybe_recompile,       // recompile the nmethod; need not invalidate
  73   74      Action_reinterpret,           // invalidate the nmethod, reset IC, maybe recompile
↓ open down ↓ 294 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX