# HG changeset patch # User Thomas Wuerthinger # Date 1363730883 -3600 # Node ID 9f0ae7df921e3d0c7f706ce31e83c95131a33f6f # Parent a019b27cb9ef9a74a71cea883cbdc87da21f59e3 Bug fix and additional assertions in deoptimize to guard phase. diff -r a019b27cb9ef -r 9f0ae7df921e graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java --- 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 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();