Mercurial > hg > truffle
changeset 11262:c4703de83626
Fix Switch probability if simplification leaves no non-zero probability successor
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 06 Aug 2013 14:44:36 +0200 |
parents | 51dad16d84c4 |
children | acf09b065eba |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java |
diffstat | 3 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Tue Aug 06 14:01:43 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Tue Aug 06 14:44:36 2013 +0200 @@ -150,6 +150,10 @@ for (int i = 0; i < current; i++) { newKeyProbabilities[i] /= totalProbability; } + } else { + for (int i = 0; i < current; i++) { + newKeyProbabilities[i] = 1.0 / current; + } } for (int i = 0; i < blockSuccessorCount(); i++) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java Tue Aug 06 14:01:43 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java Tue Aug 06 14:44:36 2013 +0200 @@ -61,7 +61,7 @@ total += d; assert d >= 0.0 : "Cannot have negative probabilities in switch node: " + d; } - assert total > 0.999 && total < 1.001; + assert total > 0.999 && total < 1.001 : "Total " + total; return true; }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java Tue Aug 06 14:01:43 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java Tue Aug 06 14:44:36 2013 +0200 @@ -136,6 +136,10 @@ for (int i = 0; i < current; i++) { newKeyProbabilities[i] /= totalProbability; } + } else { + for (int i = 0; i < current; i++) { + newKeyProbabilities[i] = 1.0 / current; + } } for (int i = 0; i < blockSuccessorCount(); i++) {