# HG changeset patch # User Thomas Wuerthinger # Date 1367420714 -7200 # Node ID 8c37649cbb62c777d9a49eb78656e202e591a784 # Parent d80d5e8e29ef23158db11d31d19e46cac7f6bc3c Fixes for probability calculation. diff -r d80d5e8e29ef -r 8c37649cbb62 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 May 01 16:49:14 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Wed May 01 17:05:14 2013 +0200 @@ -122,7 +122,7 @@ } public void setTrueSuccessorProbability(double prob) { - assert prob >= 0.0 && prob <= 1.0; + assert prob >= 0.0 && prob <= 1.0 : "Probability out of bounds: " + prob; trueSuccessorProbability = prob; } diff -r d80d5e8e29ef -r 8c37649cbb62 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Wed May 01 16:49:14 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Wed May 01 17:05:14 2013 +0200 @@ -653,7 +653,12 @@ assert concretesProbability >= 0.0; probability[i] = concretesProbability; if (i > 0) { - probability[i] = Math.max(0.0, probability[i] / 1.0 - probability[i - 1]); + double prevProbability = probability[i - 1]; + if (prevProbability == 1.0) { + probability[i] = 1.0; + } else { + probability[i] = Math.max(0.0, probability[i] / (1.0 - prevProbability)); + } } }