# HG changeset patch # User Thomas Wuerthinger # Date 1363734369 -3600 # Node ID bcfe9832552a3f632a369d3b9705994a20cdceaf # Parent 9f0ae7df921e3d0c7f706ce31e83c95131a33f6f Speical case ExceptionObjectNode in deopt to guard conversion. diff -r 9f0ae7df921e -r bcfe9832552a 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 23:08:03 2013 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Wed Mar 20 00:06:09 2013 +0100 @@ -97,11 +97,17 @@ } // We could not convert the control split - at least cut off control flow after the split. - FixedNode next = deoptBegin.next(); + FixedWithNextNode deoptPred = deoptBegin; + FixedNode next = deoptPred.next(); + if (next instanceof ExceptionObjectNode) { + deoptPred = (FixedWithNextNode) next; + next = deoptPred.next(); + } + if (next != deopt) { DeoptimizeNode newDeoptNode = (DeoptimizeNode) deopt.clone(graph); - deoptBegin.setNext(newDeoptNode); - assert deoptBegin == newDeoptNode.predecessor(); + deoptPred.setNext(newDeoptNode); + assert deoptPred == newDeoptNode.predecessor(); GraphUtil.killCFG(next); } }