changeset 7316:a64cf8797166

Fix for probabilities of MergeNodes introduced during canonicalization.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Wed, 09 Jan 2013 21:19:10 +0100
parents b2e220aeadfe
children 40be0ff5a3ce
files graal/com.oracle.graal.alloc/src/com/oracle/graal/alloc/ComputeBlockOrder.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java
diffstat 2 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.alloc/src/com/oracle/graal/alloc/ComputeBlockOrder.java	Wed Jan 09 19:16:53 2013 +0100
+++ b/graal/com.oracle.graal.alloc/src/com/oracle/graal/alloc/ComputeBlockOrder.java	Wed Jan 09 21:19:10 2013 +0100
@@ -261,7 +261,6 @@
         // start processing with standard entry block
         assert workList.isEmpty() : "list must be empty before processing";
 
-        assert readyForProcessing(startBlock);
         sortIntoWorkList(startBlock);
 
         do {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Wed Jan 09 19:16:53 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Wed Jan 09 21:19:10 2013 +0100
@@ -358,10 +358,13 @@
                 PhiNode oldPhi = (PhiNode) oldMerge.usages().first();
                 PhiNode newPhi = graph().add(new PhiNode(oldPhi.stamp(), newMerge));
 
+                double probability = 0.0;
                 for (EndNode end : ends) {
                     newPhi.addInput(phiValues.get(end));
                     newMerge.addForwardEnd(end);
+                    probability += end.probability();
                 }
+                newMerge.setProbability(probability);
 
                 FrameState stateAfter = oldMerge.stateAfter();
                 if (stateAfter != null) {