# HG changeset patch # User Roland Schatz # Date 1385396636 -3600 # Node ID 1dd9aa5a9ee52b1ce36aa190cde96725f14806f9 # Parent 1e22792abdbca952bc7aa1628f500a6881c20b32 Deoptimization reason for failed aliasing assumptions. diff -r 1e22792abdbc -r 1dd9aa5a9ee5 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/DeoptimizationReason.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/DeoptimizationReason.java Mon Nov 25 17:19:29 2013 +0100 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/DeoptimizationReason.java Mon Nov 25 17:23:56 2013 +0100 @@ -40,4 +40,5 @@ ArithmeticException, RuntimeConstraint, LoopLimitCheck, + Aliasing, } diff -r 1e22792abdbc -r 1dd9aa5a9ee5 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Mon Nov 25 17:19:29 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Mon Nov 25 17:23:56 2013 +0100 @@ -1129,6 +1129,7 @@ @HotSpotVMConstant(name = "Deoptimization::Reason_div0_check") @Stable public int deoptReasonDiv0Check; @HotSpotVMConstant(name = "Deoptimization::Reason_constraint") @Stable public int deoptReasonConstraint; @HotSpotVMConstant(name = "Deoptimization::Reason_loop_limit_check") @Stable public int deoptReasonLoopLimitCheck; + @HotSpotVMConstant(name = "Deoptimization::Reason_aliasing") @Stable public int deoptReasonAliasing; @HotSpotVMConstant(name = "Deoptimization::Action_none") @Stable public int deoptActionNone; @HotSpotVMConstant(name = "Deoptimization::Action_maybe_recompile") @Stable public int deoptActionMaybeRecompile; diff -r 1e22792abdbc -r 1dd9aa5a9ee5 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java Mon Nov 25 17:19:29 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java Mon Nov 25 17:23:56 2013 +0100 @@ -187,6 +187,8 @@ return runtime.getConfig().deoptReasonConstraint; case LoopLimitCheck: return runtime.getConfig().deoptReasonLoopLimitCheck; + case Aliasing: + return runtime.getConfig().deoptReasonAliasing; default: throw GraalInternalError.shouldNotReachHere(); } @@ -221,6 +223,8 @@ return DeoptimizationReason.RuntimeConstraint; } else if (reason == runtime.getConfig().deoptReasonLoopLimitCheck) { return DeoptimizationReason.LoopLimitCheck; + } else if (reason == runtime.getConfig().deoptReasonAliasing) { + return DeoptimizationReason.Aliasing; } else { throw GraalInternalError.shouldNotReachHere(Integer.toHexString(reason)); } diff -r 1e22792abdbc -r 1dd9aa5a9ee5 src/share/vm/runtime/deoptimization.hpp --- a/src/share/vm/runtime/deoptimization.hpp Mon Nov 25 17:19:29 2013 +0100 +++ b/src/share/vm/runtime/deoptimization.hpp Mon Nov 25 17:23:56 2013 +0100 @@ -72,6 +72,9 @@ Reason_age, // nmethod too old; tier threshold reached Reason_predicate, // compiler generated predicate failed Reason_loop_limit_check, // compiler generated loop limits check failed +#ifdef GRAAL + Reason_aliasing, // optimistic assumption about aliasing failed +#endif Reason_LIMIT, #ifdef GRAAL diff -r 1e22792abdbc -r 1dd9aa5a9ee5 src/share/vm/runtime/vmStructs.cpp --- a/src/share/vm/runtime/vmStructs.cpp Mon Nov 25 17:19:29 2013 +0100 +++ b/src/share/vm/runtime/vmStructs.cpp Mon Nov 25 17:23:56 2013 +0100 @@ -2196,7 +2196,8 @@ declare_preprocessor_constant, \ declare_c1_constant, \ declare_c2_constant, \ - declare_c2_preprocessor_constant) \ + declare_c2_preprocessor_constant, \ + declare_graal_constant) \ \ /******************/ \ /* Useful globals */ \ @@ -2505,6 +2506,7 @@ declare_constant(Deoptimization::Reason_age) \ declare_constant(Deoptimization::Reason_predicate) \ declare_constant(Deoptimization::Reason_loop_limit_check) \ + declare_graal_constant(Deoptimization::Reason_aliasing) \ declare_constant(Deoptimization::Reason_LIMIT) \ declare_constant(Deoptimization::Reason_RECORDED_LIMIT) \ \ @@ -2867,6 +2869,13 @@ # define GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY(name, value) #endif /* COMPILER1 */ +// Generate an int constant for a Graal build +#ifdef GRAAL +# define GENERATE_GRAAL_VM_INT_CONSTANT_ENTRY(name) GENERATE_VM_INT_CONSTANT_ENTRY(name) +#else +# define GENERATE_GRAAL_VM_INT_CONSTANT_ENTRY(name) +#endif + //-------------------------------------------------------------------------------- // VMLongConstantEntry macros // @@ -3009,7 +3018,8 @@ GENERATE_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, GENERATE_C1_VM_INT_CONSTANT_ENTRY, GENERATE_C2_VM_INT_CONSTANT_ENTRY, - GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY) + GENERATE_C2_PREPROCESSOR_VM_INT_CONSTANT_ENTRY, + GENERATE_GRAAL_VM_INT_CONSTANT_ENTRY) #if INCLUDE_ALL_GCS VM_INT_CONSTANTS_CMS(GENERATE_VM_INT_CONSTANT_ENTRY)