changeset 15948:6abfac153606

Ensure values stay finite in block probability computation.
author Roland Schatz <roland.schatz@oracle.com>
date Wed, 28 May 2014 12:17:00 +0200
parents 3eedf7a653ea
children 4243a6b8dd19
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/Block.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java
diffstat 2 files changed, 4 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/Block.java	Wed May 28 12:16:44 2014 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/Block.java	Wed May 28 12:17:00 2014 +0200
@@ -186,6 +186,7 @@
     }
 
     public void setProbability(double probability) {
+        assert probability >= 0 && Double.isFinite(probability);
         this.probability = probability;
     }
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java	Wed May 28 12:16:44 2014 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java	Wed May 28 12:17:00 2014 +0200
@@ -221,6 +221,9 @@
                     }
                 }
             }
+            if (probability > 1. / Double.MIN_NORMAL) {
+                probability = 1. / Double.MIN_NORMAL;
+            }
             block.setPredecessors(predecessors);
             block.setProbability(probability);