changeset 13678:7cf35c337fcf

Keep speculation and debug id when canonicalizing DynamicDeoptimizeNode
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 17 Jan 2014 16:13:05 +0100
parents 45fcb3ec0d43
children 53977508b27d
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java	Fri Jan 17 16:13:02 2014 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java	Fri Jan 17 16:13:05 2014 +0100
@@ -60,9 +60,12 @@
 
     @Override
     public Node canonical(CanonicalizerTool tool) {
-        if (actionAndReason.isConstant()) {
+        if (actionAndReason.isConstant() && speculation.isConstant()) {
             Constant constant = actionAndReason.asConstant();
-            DeoptimizeNode newDeopt = graph().add(new DeoptimizeNode(tool.getMetaAccess().decodeDeoptAction(constant), tool.getMetaAccess().decodeDeoptReason(constant)));
+            Constant speculationConstant = speculation.asConstant();
+            DeoptimizeNode newDeopt = graph().add(
+                            new DeoptimizeNode(tool.getMetaAccess().decodeDeoptAction(constant), tool.getMetaAccess().decodeDeoptReason(constant), tool.getMetaAccess().decodeDebugId(constant),
+                                            speculationConstant));
             newDeopt.setDeoptimizationState(getDeoptimizationState());
             return newDeopt;
         }