changeset 11398:8747d6af5b58

Fix for FixedGuardNode.lower in the case where the successor of the FixedGuardNode is already an AbstractBeginNode
author Gilles Duboscq <duboscq@ssw.jku.at>
date Thu, 22 Aug 2013 20:05:34 +0200
parents 956bf8c5bd8f
children c8a9914b36e8 7401a9c8a7bb
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java	Thu Aug 22 20:04:51 2013 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java	Thu Aug 22 20:05:34 2013 +0200
@@ -109,13 +109,16 @@
             DeoptimizeNode deopt = graph().add(new DeoptimizeNode(action, reason));
             deopt.setDeoptimizationState(getDeoptimizationState());
             IfNode ifNode;
+            AbstractBeginNode noDeoptSuccessor;
             if (negated) {
                 ifNode = graph().add(new IfNode(condition, deopt, next, 0));
+                noDeoptSuccessor = ifNode.falseSuccessor();
             } else {
                 ifNode = graph().add(new IfNode(condition, next, deopt, 1));
+                noDeoptSuccessor = ifNode.trueSuccessor();
             }
             ((FixedWithNextNode) predecessor()).setNext(ifNode);
-            this.replaceAtUsages(next.predecessor());
+            this.replaceAtUsages(noDeoptSuccessor);
             GraphUtil.killWithUnusedFloatingInputs(this);
         }
     }