changeset 12757:a36839dafe50

Remove some useless short casts, synchronize deoptimization.hpp with HotSpotMetaAccessProvider
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 12 Nov 2013 10:59:06 +0100
parents 70b138d008ff
children ca33948fb804
files graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLIRGenerator.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotLIRGenerator.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java src/share/vm/runtime/deoptimization.hpp
diffstat 5 files changed, 24 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- 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());
     }
 
--- 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());
     }
 
--- 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) {
--- 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) {
--- 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,