diff graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopFragment.java @ 5639:d1d649d2f97c

set correct probabilities on MergeNodes
author Lukas Stadler <lukas.stadler@jku.at>
date Fri, 15 Jun 2012 15:59:22 +0200
parents cf630991cb1d
children 3405794d135c
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopFragment.java	Fri Jun 15 14:42:11 2012 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/loop/LoopFragment.java	Fri Jun 15 15:59:22 2012 +0200
@@ -212,20 +212,22 @@
         assert isDuplicate();
         StructuredGraph graph = graph();
         for (BeginNode earlyExit : toHirBlocks(original().loop().lirLoop().exits)) {
+            FixedNode next = earlyExit.next();
             if (!this.contains(earlyExit)) {
                 continue;
             }
             BeginNode newEarlyExit = getDuplicatedNode(earlyExit);
             assert newEarlyExit != null;
             MergeNode merge = graph.add(new MergeNode());
+            merge.setProbability(next.probability());
             EndNode originalEnd = graph.add(new EndNode());
             EndNode newEnd = graph.add(new EndNode());
             merge.addForwardEnd(originalEnd);
             merge.addForwardEnd(newEnd);
-            FixedNode next = earlyExit.next();
             earlyExit.setNext(originalEnd);
             newEarlyExit.setNext(newEnd);
             merge.setNext(next);
+
             FrameState exitState = earlyExit.stateAfter();
             FrameState state = null;
             if (exitState != null) {