Mercurial > hg > truffle
changeset 5146:25903e52af48
Add assertion around probabilities, and fix potential problem in ComputeProbabilityPhase
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Thu, 22 Mar 2012 19:28:45 +0100 |
parents | 19a3ae027c56 |
children | 3851c69bf4ea |
files | graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/ComputeProbabilityPhase.java graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java |
diffstat | 2 files changed, 12 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/ComputeProbabilityPhase.java Thu Mar 22 18:36:52 2012 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/ComputeProbabilityPhase.java Thu Mar 22 19:28:45 2012 +0100 @@ -145,13 +145,11 @@ } backEdgeProb += le.probability() * factor; } - double d = backEdgeProb; + double d = loopBegin.probability() - backEdgeProb; if (d < EPSILON) { d = EPSILON; - } else if (d > loopBegin.probability() - EPSILON) { - d = loopBegin.probability() - EPSILON; } - loopFrequency = loopBegin.probability() / (loopBegin.probability() - d); + loopFrequency = loopBegin.probability() / d; loopBegin.setLoopFrequency(loopFrequency); } return loopFrequency;
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Thu Mar 22 18:36:52 2012 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Thu Mar 22 19:28:45 2012 +0100 @@ -27,7 +27,6 @@ import java.lang.reflect.*; import java.util.*; -import java.util.concurrent.atomic.*; import com.oracle.graal.compiler.*; import com.oracle.graal.compiler.phases.*; @@ -1139,9 +1138,19 @@ prob[i] = 1.0d / numberOfCases; } } + assert allPositive(prob); return prob; } + private static boolean allPositive(double[] a) { + for (double d : a) { + if (d < 0) { + return false; + } + } + return true; + } + private void genLookupswitch() { int bci = bci(); ValueNode value = frameState.ipop();