17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_VM_RUNTIME_DEOPTIMIZATION_HPP 26 #define SHARE_VM_RUNTIME_DEOPTIMIZATION_HPP 27 28 #include "memory/allocation.hpp" 29 #include "runtime/frame.inline.hpp" 30 31 class ProfileData; 32 class vframeArray; 33 class MonitorValue; 34 class ObjectValue; 35 36 class Deoptimization : AllStatic { 37 public: 38 // What condition caused the deoptimization? 39 enum DeoptReason { 40 Reason_many = -1, // indicates presence of several reasons 41 Reason_none = 0, // indicates absence of a relevant deopt. 42 // Next 7 reasons are recorded per bytecode in DataLayout::trap_bits 43 Reason_null_check, // saw unexpected null or zero divisor (@bci) 44 Reason_null_assert, // saw unexpected non-null or non-zero (@bci) 45 Reason_range_check, // saw unexpected array index (@bci) 46 Reason_class_check, // saw unexpected object class (@bci) 47 Reason_array_check, // saw unexpected array class (aastore @bci) 48 Reason_intrinsic, // saw unexpected operand to intrinsic (@bci) 49 Reason_bimorphic, // saw unexpected object class in bimorphic inlining (@bci) 50 51 Reason_unloaded, // unloaded class or constant pool entry 52 Reason_uninitialized, // bad class state (uninitialized) 53 Reason_unreached, // code is not reached, compiler 54 Reason_unhandled, // arbitrary compiler limitation 55 Reason_constraint, // arbitrary runtime constraint violated 56 Reason_div0_check, // a null_check due to division by zero | 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_VM_RUNTIME_DEOPTIMIZATION_HPP 26 #define SHARE_VM_RUNTIME_DEOPTIMIZATION_HPP 27 28 #include "memory/allocation.hpp" 29 #include "runtime/frame.inline.hpp" 30 31 class ProfileData; 32 class vframeArray; 33 class MonitorValue; 34 class ObjectValue; 35 36 class Deoptimization : AllStatic { 37 friend class VMStructs; 38 39 public: 40 // What condition caused the deoptimization? 41 enum DeoptReason { 42 Reason_many = -1, // indicates presence of several reasons 43 Reason_none = 0, // indicates absence of a relevant deopt. 44 // Next 7 reasons are recorded per bytecode in DataLayout::trap_bits 45 Reason_null_check, // saw unexpected null or zero divisor (@bci) 46 Reason_null_assert, // saw unexpected non-null or non-zero (@bci) 47 Reason_range_check, // saw unexpected array index (@bci) 48 Reason_class_check, // saw unexpected object class (@bci) 49 Reason_array_check, // saw unexpected array class (aastore @bci) 50 Reason_intrinsic, // saw unexpected operand to intrinsic (@bci) 51 Reason_bimorphic, // saw unexpected object class in bimorphic inlining (@bci) 52 53 Reason_unloaded, // unloaded class or constant pool entry 54 Reason_uninitialized, // bad class state (uninitialized) 55 Reason_unreached, // code is not reached, compiler 56 Reason_unhandled, // arbitrary compiler limitation 57 Reason_constraint, // arbitrary runtime constraint violated 58 Reason_div0_check, // a null_check due to division by zero |