changeset 12719:895f31682b88

Make the speculation id an int and allow for more bits to be set in the HotSpot implementation (which currently silently discards unsupported high bit).
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 08 Nov 2013 12:10:15 +0100
parents 605c69ce3b35
children 8898d449f95d
files graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.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 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java
diffstat 4 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.java	Fri Nov 08 12:04:35 2013 +0100
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaAccessProvider.java	Fri Nov 08 12:10:15 2013 +0100
@@ -74,7 +74,7 @@
      * 
      * @return the encoded value as an integer
      */
-    Constant encodeDeoptActionAndReason(DeoptimizationAction action, DeoptimizationReason reason, short speculationId);
+    Constant encodeDeoptActionAndReason(DeoptimizationAction action, DeoptimizationReason reason, int speculationId);
 
     DeoptimizationReason decodeDeoptReason(Constant constant);
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java	Fri Nov 08 12:04:35 2013 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMetaAccessProvider.java	Fri Nov 08 12:10:15 2013 +0100
@@ -84,10 +84,10 @@
     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 = 0xffff;
+    private static final int DEBUG_MASK = 0x7fffff;
 
     @Override
-    public Constant encodeDeoptActionAndReason(DeoptimizationAction action, DeoptimizationReason reason, short speculationId) {
+    public Constant encodeDeoptActionAndReason(DeoptimizationAction action, DeoptimizationReason reason, int speculationId) {
         int actionValue = convertDeoptAction(action);
         int reasonValue = convertDeoptReason(reason);
         int speculationValue = speculationId & DEBUG_MASK;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java	Fri Nov 08 12:04:35 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java	Fri Nov 08 12:10:15 2013 +0100
@@ -31,13 +31,13 @@
 
     private final DeoptimizationAction action;
     private final DeoptimizationReason reason;
-    private final short speculationId;
+    private final int speculationId;
 
     public DeoptimizeNode(DeoptimizationAction action, DeoptimizationReason reason) {
         this(action, reason, (short) 0);
     }
 
-    public DeoptimizeNode(DeoptimizationAction action, DeoptimizationReason reason, short speculationId) {
+    public DeoptimizeNode(DeoptimizationAction action, DeoptimizationReason reason, int speculationId) {
         assert action != null;
         assert reason != null;
         this.action = action;
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java	Fri Nov 08 12:04:35 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java	Fri Nov 08 12:10:15 2013 +0100
@@ -154,7 +154,7 @@
             StructuredGraph graph = guard.graph();
             AbstractBeginNode fastPath = graph.add(new BeginNode());
             @SuppressWarnings("deprecation")
-            DeoptimizeNode deopt = graph.add(new DeoptimizeNode(guard.action(), guard.reason(), (short) (useGuardIdAsSpeculationId ? guard.getId() : 0)));
+            DeoptimizeNode deopt = graph.add(new DeoptimizeNode(guard.action(), guard.reason(), useGuardIdAsSpeculationId ? guard.getId() : 0));
             AbstractBeginNode deoptBranch = AbstractBeginNode.begin(deopt);
             AbstractBeginNode trueSuccessor;
             AbstractBeginNode falseSuccessor;