changeset 8387:9f0ae7df921e

Bug fix and additional assertions in deoptimize to guard phase.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Tue, 19 Mar 2013 23:08:03 +0100
parents a019b27cb9ef
children bcfe9832552a
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java	Tue Mar 19 20:48:53 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java	Tue Mar 19 23:08:03 2013 +0100
@@ -64,7 +64,9 @@
             Debug.log("Visiting %s followed by %s", mergeNode, deopt);
             List<BeginNode> begins = new ArrayList<>();
             for (EndNode end : mergeNode.forwardEnds()) {
-                begins.add(findBeginNode(end));
+                BeginNode newBeginNode = findBeginNode(end);
+                assert !begins.contains(newBeginNode);
+                begins.add(newBeginNode);
             }
             for (BeginNode begin : begins) {
                 assert !begin.isDeleted();
@@ -97,8 +99,6 @@
         // We could not convert the control split - at least cut off control flow after the split.
         FixedNode next = deoptBegin.next();
         if (next != deopt) {
-            FixedWithNextNode pred = (FixedWithNextNode) deopt.predecessor();
-            pred.setNext(null);
             DeoptimizeNode newDeoptNode = (DeoptimizeNode) deopt.clone(graph);
             deoptBegin.setNext(newDeoptNode);
             assert deoptBegin == newDeoptNode.predecessor();