Mercurial > hg > graal-compiler
changeset 9469:8c37649cbb62
Fixes for probability calculation.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Wed, 01 May 2013 17:05:14 +0200 |
parents | d80d5e8e29ef |
children | 225fc5463430 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java |
diffstat | 2 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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; }
--- 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)); + } } }