# HG changeset patch # User Gilles Duboscq # Date 1375793076 -7200 # Node ID c4703de83626b5e5b3ef8b1dd7f46f1f9660b8f6 # Parent 51dad16d84c481fe30cc3fcda55f8752e19e287f Fix Switch probability if simplification leaves no non-zero probability successor diff -r 51dad16d84c4 -r c4703de83626 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java --- 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++) { diff -r 51dad16d84c4 -r c4703de83626 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java --- 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; } diff -r 51dad16d84c4 -r c4703de83626 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java --- 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++) {