Mercurial > hg > truffle
changeset 15878:c315c86e2130
Fix exponential explosion when propagating zero probabilities.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Tue, 13 May 2014 12:15:32 +0200 |
parents | f55153a2ca55 |
children | b963148055d6 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Tue May 13 03:57:06 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Tue May 13 12:15:32 2014 +0200 @@ -642,17 +642,19 @@ if (ifNode.trueSuccessorProbability == 0.0) { return; } else if (ifNode.trueSuccessorProbability == 1.0) { - propagateZeroProbability((FixedNode) ifNode.predecessor()); + continue; } else { ifNode.setTrueSuccessorProbability(0.0); + return; } } else if (ifNode.falseSuccessor() == prev) { if (ifNode.trueSuccessorProbability == 1.0) { return; } else if (ifNode.trueSuccessorProbability == 0.0) { - propagateZeroProbability((FixedNode) ifNode.predecessor()); + continue; } else { ifNode.setTrueSuccessorProbability(1.0); + return; } } else { throw new GraalInternalError("Illegal state"); @@ -661,6 +663,7 @@ for (AbstractEndNode endNode : ((MergeNode) node).cfgPredecessors()) { propagateZeroProbability(endNode); } + return; } prev = node; }