changeset 7326:6939a5af19d5

Be sure to remove framestate of merge when removing empty diamond shape
author Gilles Duboscq <duboscq@ssw.jku.at>
date Thu, 10 Jan 2013 12:03:14 +0100
parents 4013a84e1dd0
children 1003fde9b882 c5a9bcd9493d
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/CanonicalizerTool.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java
diffstat 3 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Thu Jan 10 11:41:10 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Thu Jan 10 12:03:14 2013 +0100
@@ -428,6 +428,7 @@
         originalFalseSuccessor.prepareDelete();
 
         FixedNode next = merge.next();
+        FrameState state = merge.stateAfter();
         merge.setNext(null);
         setTrueSuccessor(null);
         setFalseSuccessor(null);
@@ -438,6 +439,9 @@
         merge.safeDelete();
         trueEnd.safeDelete();
         falseEnd.safeDelete();
+        if (state != null) {
+            tool.removeIfUnused(state);
+        }
         tool.addToWorkList(next);
     }
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/CanonicalizerTool.java	Thu Jan 10 11:41:10 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/spi/CanonicalizerTool.java	Thu Jan 10 12:03:14 2013 +0100
@@ -24,10 +24,12 @@
 
 import com.oracle.graal.api.code.*;
 import com.oracle.graal.api.meta.*;
+import com.oracle.graal.graph.*;
 
 
 public interface CanonicalizerTool {
     TargetDescription target();
     Assumptions assumptions();
     MetaAccessProvider runtime();
+    void removeIfUnused(Node node);
 }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java	Thu Jan 10 11:41:10 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java	Thu Jan 10 12:03:14 2013 +0100
@@ -341,5 +341,10 @@
         public void addToWorkList(Node node) {
             nodeWorkSet.addAgain(node);
         }
+
+        @Override
+        public void removeIfUnused(Node node) {
+            tryKillUnused(node);
+        }
     }
 }