Mercurial > hg > graal-compiler
changeset 6359:f8416485a37f
canonicalize IntegerSwitchNode with only a default successor
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Wed, 12 Sep 2012 11:29:34 +0200 |
parents | 31966e3f42d2 |
children | e5203e5843fc 6d232ee6a62d ad97777056ec |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java |
diffstat | 1 files changed, 5 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Tue Sep 11 14:57:06 2012 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Wed Sep 12 11:29:34 2012 +0200 @@ -91,7 +91,10 @@ @Override public void simplify(SimplifierTool tool) { - if (value() instanceof ConstantNode) { + if (blockSuccessorCount() == 1) { + tool.addToWorkList(defaultSuccessor()); + ((StructuredGraph) graph()).removeSplitPropagate(this, defaultSuccessorIndex()); + } else if (value() instanceof ConstantNode) { int constant = value().asConstant().asInt(); int survivingEdge = keySuccessorIndex(keyCount()); @@ -107,8 +110,7 @@ } tool.addToWorkList(blockSuccessor(survivingEdge)); ((StructuredGraph) graph()).removeSplitPropagate(this, survivingEdge); - } - if (value() != null) { + } else if (value() != null) { IntegerStamp stamp = value().integerStamp(); if (!stamp.isUnrestricted()) { int validKeys = 0;