changeset 4652:bdf2eb70ef3e

Kill CallTargetNode and FrameState in killCFG to avoid keeping some invalid nodes alive
author Gilles Duboscq <duboscq@ssw.jku.at>
date Mon, 20 Feb 2012 19:19:12 +0100
parents 4e9d904a4d1a
children ac9ab44b75fd
files graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/util/GraphUtil.java
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/util/GraphUtil.java	Mon Feb 20 16:37:23 2012 +0100
+++ b/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/util/GraphUtil.java	Mon Feb 20 19:19:12 2012 +0100
@@ -72,7 +72,7 @@
 
     public static void propagateKill(Node node) {
         if (node != null && node.isAlive()) {
-            List<Node> usagesSnapshot = node.usages().filter(isA(FloatingNode.class).or(CallTargetNode.class)).snapshot();
+            List<Node> usagesSnapshot = node.usages().filter(isA(FloatingNode.class).or(CallTargetNode.class).or(FrameState.class)).snapshot();
 
             // null out remaining usages
             node.replaceAtUsages(null);
@@ -92,10 +92,10 @@
     }
 
     public static void killUnusedFloatingInputs(Node node) {
-        List<FloatingNode> floatingInputs = node.inputs().filter(FloatingNode.class).snapshot();
+        List<Node> floatingInputs = node.inputs().filter(isA(FloatingNode.class).or(CallTargetNode.class).or(FrameState.class)).snapshot();
         node.safeDelete();
 
-        for (FloatingNode in : floatingInputs) {
+        for (Node in : floatingInputs) {
             if (in.isAlive() && in.usages().isEmpty()) {
                 killUnusedFloatingInputs(in);
             }