Mercurial > hg > truffle
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); }