Mercurial > hg > graal-compiler
changeset 8388:bcfe9832552a
Speical case ExceptionObjectNode in deopt to guard conversion.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Wed, 20 Mar 2013 00:06:09 +0100 |
parents | 9f0ae7df921e |
children | e53b31b29aa4 |
files | graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java |
diffstat | 1 files changed, 9 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 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); } }