Mercurial > hg > graal-compiler
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) {