changeset 8389:e53b31b29aa4

clean up unused true/false constants in ConditionalEliminationPhase
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 19 Mar 2013 17:03:13 +0100
parents bcfe9832552a
children acc24060b64f 7aefc149c471
files graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/PostOrderNodeIterator.java
diffstat 2 files changed, 17 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java	Wed Mar 20 00:06:09 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java	Tue Mar 19 17:03:13 2013 +0100
@@ -299,8 +299,18 @@
 
         public ConditionalElimination(FixedNode start, State initialState) {
             super(start, initialState);
-            this.trueConstant = LogicConstantNode.tautology(graph);
-            this.falseConstant = LogicConstantNode.contradiction(graph);
+            trueConstant = LogicConstantNode.tautology(graph);
+            falseConstant = LogicConstantNode.contradiction(graph);
+        }
+
+        @Override
+        public void finished() {
+            if (trueConstant.usages().isEmpty()) {
+                graph.removeFloating(trueConstant);
+            }
+            if (falseConstant.usages().isEmpty()) {
+                graph.removeFloating(falseConstant);
+            }
         }
 
         private void registerCondition(boolean isTrue, LogicNode condition, ValueNode anchor) {
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/PostOrderNodeIterator.java	Wed Mar 20 00:06:09 2013 +0100
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/PostOrderNodeIterator.java	Tue Mar 19 17:03:13 2013 +0100
@@ -100,6 +100,7 @@
                 assert false : current;
             }
         } while (current != null);
+        finished();
     }
 
     private void queueSuccessors(FixedNode x, Set<Node> successors) {
@@ -218,4 +219,8 @@
     protected void invoke(Invoke invoke) {
         node(invoke.node());
     }
+
+    protected void finished() {
+        // nothing to do
+    }
 }