Mercurial > hg > truffle
changeset 11375:1a110b7c03e1
Use smaller epsilon in ComputeProbabilityClosure
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 20 Aug 2013 15:39:58 +0200 |
parents | 9cdf7a9d3475 |
children | d9bcf8789d57 d7d12ef788ba |
files | graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ComputeProbabilityClosure.java |
diffstat | 1 files changed, 5 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ComputeProbabilityClosure.java Tue Aug 20 13:22:15 2013 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ComputeProbabilityClosure.java Tue Aug 20 15:39:58 2013 +0200 @@ -48,7 +48,7 @@ */ public class ComputeProbabilityClosure { - private static final double EPSILON = 1d / Integer.MAX_VALUE; + private static final double EPSILON = Math.nextUp(0); private final StructuredGraph graph; private final NodesToDoubles nodeProbabilities; @@ -191,11 +191,12 @@ } backEdgeProb += nodeProbabilities.get(le) * factor; } - double d = nodeProbabilities.get(loopBegin) - backEdgeProb; - if (d < EPSILON) { + double entryProb = nodeProbabilities.get(loopBegin); + double d = entryProb - backEdgeProb; + if (d <= EPSILON) { d = EPSILON; } - loopFrequency = nodeProbabilities.get(loopBegin) / d; + loopFrequency = entryProb / d; loopBegin.setLoopFrequency(loopFrequency); } return loopFrequency;