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;