# HG changeset patch # User Gilles Duboscq # Date 1384250346 -3600 # Node ID a36839dafe50759f0d761d27d41ad097b0e0a5fe # Parent 70b138d008ff75e9efa3adc2923548e80aed6345 Remove some useless short casts, synchronize deoptimization.hpp with HotSpotMetaAccessProvider diff -r 70b138d008ff -r a36839dafe50 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Mon Nov 11 23:43:53 2013 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java Tue Nov 12 10:59:06 2013 +0100 @@ -406,7 +406,7 @@ @Override public void emitDeoptimizeCaller(DeoptimizationAction action, DeoptimizationReason reason) { - moveDeoptimizationActionAndReasonToThread(getMetaAccess().encodeDeoptActionAndReason(action, reason, (short) 0)); + moveDeoptimizationActionAndReasonToThread(getMetaAccess().encodeDeoptActionAndReason(action, reason, 0)); append(new AMD64HotSpotDeoptimizeCallerOp()); } diff -r 70b138d008ff -r a36839dafe50 graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Mon Nov 11 23:43:53 2013 +0100 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java Tue Nov 12 10:59:06 2013 +0100 @@ -207,7 +207,7 @@ @Override public void emitDeoptimizeCaller(DeoptimizationAction action, DeoptimizationReason reason) { - moveDeoptimizationActionAndReasonToThread(getMetaAccess().encodeDeoptActionAndReason(action, reason, (short) 0)); + moveDeoptimizationActionAndReasonToThread(getMetaAccess().encodeDeoptActionAndReason(action, reason, 0)); append(new SPARCHotSpotDeoptimizeCallerOp()); } diff -r 70b138d008ff -r a36839dafe50 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 11 23:43:53 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java Tue Nov 12 10:59:06 2013 +0100 @@ -79,19 +79,31 @@ return runtime.getCompilerToVM().getJavaField(reflectionField); } + // These are synchronized with values in deoptimization.hpp:105 + private static final int ACTION_BITS = 3; + private static final int REASON_BITS = 5; + private static final int SPECULATION_BITS = 23; + private static final int ACTION_SHIFT = 0; - private static final int ACTION_MASK = 0x07; - private static final int REASON_SHIFT = 3; - private static final int REASON_MASK = 0x1f; - private static final int DEBUG_SHIFT = 8; - private static final int DEBUG_MASK = 0x7fffff; + private static final int ACTION_MASK = intMaskRight(ACTION_BITS); + + private static final int REASON_SHIFT = ACTION_SHIFT + ACTION_BITS; + private static final int REASON_MASK = intMaskRight(REASON_BITS); + + private static final int SPECULATION_SHIFT = REASON_SHIFT + REASON_BITS; + private static final int SPECULATION_MASK = intMaskRight(SPECULATION_BITS); + + private static int intMaskRight(int n) { + assert n <= 32; + return n == 32 ? -1 : (1 << n) - 1; + } @Override public Constant encodeDeoptActionAndReason(DeoptimizationAction action, DeoptimizationReason reason, int speculationId) { int actionValue = convertDeoptAction(action); int reasonValue = convertDeoptReason(reason); - int speculationValue = speculationId & DEBUG_MASK; - Constant c = Constant.forInt(~((speculationValue << DEBUG_SHIFT) | (reasonValue << REASON_SHIFT) | (actionValue << ACTION_SHIFT))); + int speculationValue = speculationId & SPECULATION_MASK; + Constant c = Constant.forInt(~((speculationValue << SPECULATION_SHIFT) | (reasonValue << REASON_SHIFT) | (actionValue << ACTION_SHIFT))); assert c.asInt() < 0; return c; } @@ -109,7 +121,7 @@ } public short decodeSpeculationId(Constant constant) { - return (short) (((~constant.asInt()) >> DEBUG_SHIFT) & DEBUG_MASK); + return (short) (((~constant.asInt()) >> SPECULATION_SHIFT) & SPECULATION_MASK); } public int convertDeoptAction(DeoptimizationAction action) { diff -r 70b138d008ff -r a36839dafe50 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java Mon Nov 11 23:43:53 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java Tue Nov 12 10:59:06 2013 +0100 @@ -34,7 +34,7 @@ private final int speculationId; public DeoptimizeNode(DeoptimizationAction action, DeoptimizationReason reason) { - this(action, reason, (short) 0); + this(action, reason, 0); } public DeoptimizeNode(DeoptimizationAction action, DeoptimizationReason reason, int speculationId) { diff -r 70b138d008ff -r a36839dafe50 src/share/vm/runtime/deoptimization.hpp --- a/src/share/vm/runtime/deoptimization.hpp Mon Nov 11 23:43:53 2013 +0100 +++ b/src/share/vm/runtime/deoptimization.hpp Tue Nov 12 10:59:06 2013 +0100 @@ -102,7 +102,7 @@ enum { _action_bits = 3, _reason_bits = 5, - _speculation_id_bits = 16, + _speculation_id_bits = 23, _action_shift = 0, _reason_shift = _action_shift+_action_bits, _speculation_id_shift = _reason_shift+_reason_bits,