OpenJDK / graal / graal-jvmci-8
changeset 8224:df68f316a4c8
Merge.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Tue, 12 Mar 2013 15:36:27 +0100 |
parents | b9eb0d939e60 3866e39b88b5 |
children | d5239d9bbfac |
files | |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java Tue Mar 12 15:07:20 2013 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java Tue Mar 12 15:36:27 2013 +0100 @@ -59,12 +59,19 @@ BeginNode trueSuccessor; BeginNode falseSuccessor; DeoptimizeNode deopt = graph.add(new DeoptimizeNode(guard.action(), guard.reason())); + BeginNode deoptBranch = BeginNode.begin(deopt); + Loop loop = block.getLoop(); + while (loop != null) { + LoopExitNode exit = graph.add(new LoopExitNode(loop.loopBegin())); + graph.addBeforeFixed(deopt, exit); + loop = loop.parent; + } if (guard.negated()) { - trueSuccessor = BeginNode.begin(deopt); + trueSuccessor = deoptBranch; falseSuccessor = fastPath; } else { trueSuccessor = fastPath; - falseSuccessor = BeginNode.begin(deopt); + falseSuccessor = deoptBranch; } IfNode ifNode = graph.add(new IfNode(guard.condition(), trueSuccessor, falseSuccessor, trueSuccessor == fastPath ? 1 : 0)); guard.replaceAndDelete(fastPath);