30 class Deoptimization : AllStatic {
31 public:
32 // What condition caused the deoptimization?
33 enum DeoptReason {
34 Reason_many = -1, // indicates presence of several reasons
35 Reason_none = 0, // indicates absence of a relevant deopt.
36 Reason_null_check, // saw unexpected null or zero divisor (@bci)
37 Reason_null_assert, // saw unexpected non-null or non-zero (@bci)
38 Reason_range_check, // saw unexpected array index (@bci)
39 Reason_class_check, // saw unexpected object class (@bci)
40 Reason_array_check, // saw unexpected array class (aastore @bci)
41 Reason_intrinsic, // saw unexpected operand to intrinsic (@bci)
42 Reason_unloaded, // unloaded class or constant pool entry
43 Reason_uninitialized, // bad class state (uninitialized)
44 Reason_unreached, // code is not reached, compiler
45 Reason_unhandled, // arbitrary compiler limitation
46 Reason_constraint, // arbitrary runtime constraint violated
47 Reason_div0_check, // a null_check due to division by zero
48 Reason_age, // nmethod too old; tier threshold reached
49 Reason_predicate, // compiler generated predicate failed
50 Reason_LIMIT,
51 // Note: Keep this enum in sync. with _trap_reason_name.
52 Reason_RECORDED_LIMIT = Reason_unloaded // some are not recorded per bc
53 // Note: Reason_RECORDED_LIMIT should be < 8 to fit into 3 bits of
54 // DataLayout::trap_bits. This dependency is enforced indirectly
55 // via asserts, to avoid excessive direct header-to-header dependencies.
56 // See Deoptimization::trap_state_reason and class DataLayout.
57 };
58
59 // What action must be taken by the runtime?
60 enum DeoptAction {
61 Action_none, // just interpret, do not invalidate nmethod
62 Action_maybe_recompile, // recompile the nmethod; need not invalidate
63 Action_reinterpret, // invalidate the nmethod, reset IC, maybe recompile
64 Action_make_not_entrant, // invalidate the nmethod, recompile (probably)
65 Action_make_not_compilable, // invalidate the nmethod and do not compile
66 Action_LIMIT
67 // Note: Keep this enum in sync. with _trap_action_name.
68 };
69
|
30 class Deoptimization : AllStatic {
31 public:
32 // What condition caused the deoptimization?
33 enum DeoptReason {
34 Reason_many = -1, // indicates presence of several reasons
35 Reason_none = 0, // indicates absence of a relevant deopt.
36 Reason_null_check, // saw unexpected null or zero divisor (@bci)
37 Reason_null_assert, // saw unexpected non-null or non-zero (@bci)
38 Reason_range_check, // saw unexpected array index (@bci)
39 Reason_class_check, // saw unexpected object class (@bci)
40 Reason_array_check, // saw unexpected array class (aastore @bci)
41 Reason_intrinsic, // saw unexpected operand to intrinsic (@bci)
42 Reason_unloaded, // unloaded class or constant pool entry
43 Reason_uninitialized, // bad class state (uninitialized)
44 Reason_unreached, // code is not reached, compiler
45 Reason_unhandled, // arbitrary compiler limitation
46 Reason_constraint, // arbitrary runtime constraint violated
47 Reason_div0_check, // a null_check due to division by zero
48 Reason_age, // nmethod too old; tier threshold reached
49 Reason_predicate, // compiler generated predicate failed
50 Reason_bimorphic, // failure of bimorphic inlining
51 Reason_LIMIT,
52 // Note: Keep this enum in sync. with _trap_reason_name.
53 Reason_RECORDED_LIMIT = Reason_unloaded // some are not recorded per bc
54 // Note: Reason_RECORDED_LIMIT should be < 8 to fit into 3 bits of
55 // DataLayout::trap_bits. This dependency is enforced indirectly
56 // via asserts, to avoid excessive direct header-to-header dependencies.
57 // See Deoptimization::trap_state_reason and class DataLayout.
58 };
59
60 // What action must be taken by the runtime?
61 enum DeoptAction {
62 Action_none, // just interpret, do not invalidate nmethod
63 Action_maybe_recompile, // recompile the nmethod; need not invalidate
64 Action_reinterpret, // invalidate the nmethod, reset IC, maybe recompile
65 Action_make_not_entrant, // invalidate the nmethod, recompile (probably)
66 Action_make_not_compilable, // invalidate the nmethod and do not compile
67 Action_LIMIT
68 // Note: Keep this enum in sync. with _trap_action_name.
69 };
70
|