# HG changeset patch # User Thomas Wuerthinger # Date 1357762750 -3600 # Node ID a64cf879716613d26d7bf306004dac61ec9f04bd # Parent b2e220aeadfea3a6b5ddb2001d9aaa4083a48880 Fix for probabilities of MergeNodes introduced during canonicalization. diff -r b2e220aeadfe -r a64cf8797166 graal/com.oracle.graal.alloc/src/com/oracle/graal/alloc/ComputeBlockOrder.java --- 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 { diff -r b2e220aeadfe -r a64cf8797166 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java --- 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) {