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;