# HG changeset patch # User Lukas Stadler # Date 1335443725 -7200 # Node ID 46fb141ae20f503d614c43f017f5749db4fdd5b3 # Parent 31fd58477e4445e310cb200d52aab95dcea7f0ed# Parent 654318af685db692801bd6695bdbd923b97e8450 Merge diff -r 31fd58477e44 -r 46fb141ae20f graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/CanonicalizerPhase.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/CanonicalizerPhase.java Thu Apr 26 14:27:00 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/CanonicalizerPhase.java Thu Apr 26 14:35:25 2012 +0200 @@ -129,8 +129,7 @@ graph.stopTrackingInputChange(); while (graph.getUsagesDroppedNodesCount() > 0) { for (Node n : graph.getAndCleanUsagesDroppedNodes()) { - if (!n.isDeleted() && n.usages().size() == 0 && n instanceof FloatingNode) { - n.clearInputs(); + if (!n.isDeleted() && n.usages().size() == 0 && GraphUtil.isFloatingNode().apply(n)) { n.safeDelete(); } } diff -r 31fd58477e44 -r 46fb141ae20f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Thu Apr 26 14:27:00 2012 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Thu Apr 26 14:35:25 2012 +0200 @@ -28,12 +28,15 @@ import com.oracle.graal.graph.*; import com.oracle.graal.graph.iterators.*; +import com.oracle.graal.graph.iterators.NodePredicates.PositiveTypePredicate; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.virtual.*; public class GraphUtil { + private static final PositiveTypePredicate FLOATING = isA(FloatingNode.class).or(CallTargetNode.class).or(FrameState.class).or(VirtualObjectFieldNode.class).or(VirtualObjectNode.class); + public static void killCFG(FixedNode node) { assert node.isAlive(); if (node instanceof EndNode) { @@ -83,7 +86,7 @@ } public static NodePredicate isFloatingNode() { - return isA(FloatingNode.class).or(CallTargetNode.class).or(FrameState.class).or(VirtualObjectFieldNode.class).or(VirtualObjectNode.class); + return FLOATING; } public static void propagateKill(Node node) { @@ -93,7 +96,7 @@ // null out remaining usages node.replaceAtUsages(null); node.replaceAtPredecessors(null); - killUnusedFloatingInputs(node); + killWithUnusedFloatingInputs(node); for (Node usage : usagesSnapshot) { if (!usage.isDeleted()) { @@ -107,13 +110,13 @@ } } - public static void killUnusedFloatingInputs(Node node) { + public static void killWithUnusedFloatingInputs(Node node) { List floatingInputs = node.inputs().filter(isFloatingNode()).snapshot(); node.safeDelete(); for (Node in : floatingInputs) { if (in.isAlive() && in.usages().isEmpty()) { - killUnusedFloatingInputs(in); + killWithUnusedFloatingInputs(in); } } } diff -r 31fd58477e44 -r 46fb141ae20f src/share/tools/IdealGraphVisualizer/Graal/src/com/sun/hotspot/igv/graal/filters/color.filter --- a/src/share/tools/IdealGraphVisualizer/Graal/src/com/sun/hotspot/igv/graal/filters/color.filter Thu Apr 26 14:27:00 2012 +0200 +++ b/src/share/tools/IdealGraphVisualizer/Graal/src/com/sun/hotspot/igv/graal/filters/color.filter Thu Apr 26 14:35:25 2012 +0200 @@ -1,11 +1,12 @@ colorize("name", ".*", white); -colorize("name", "Begin|EndNode|LoopBegin|LoopEnd|Return", orange); -colorize("name", "Phi.*", magenta); +colorize("name", "Begin|EndNode|LoopBegin|LoopEnd|LoopExit|Return", orange); +colorize("name", "Phi.*|ValueProxy", magenta); colorize("name", "FrameState@.*", new java.awt.Color(0.5, 0.8, 1.0)); colorize("name", "If|Merge", pink); colorize("name", "const.*", new java.awt.Color(0.7, 0.7, 0.7)); colorize("name", "Local", new java.awt.Color(0.85, 0.85, 0.85)); colorize("name", "\\+|-|\\*|/|&|\\||<<|>>|>>>", cyan); colorize("name", "Comp .*", yellow); +colorize("name", "Virtual.*", green); colorize("notInOwnBlock", "true", red); \ No newline at end of file diff -r 31fd58477e44 -r 46fb141ae20f visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/color.filter --- a/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/color.filter Thu Apr 26 14:27:00 2012 +0200 +++ b/visualizer/Graal/src/com/sun/hotspot/igv/graal/filters/color.filter Thu Apr 26 14:35:25 2012 +0200 @@ -1,11 +1,12 @@ colorize("name", ".*", white); -colorize("name", "Begin|EndNode|LoopBegin|LoopEnd|Return", orange); -colorize("name", "Phi.*", magenta); +colorize("name", "Begin|EndNode|LoopBegin|LoopEnd|LoopExit|Return", orange); +colorize("name", "Phi.*|ValueProxy", magenta); colorize("name", "FrameState@.*", new java.awt.Color(0.5, 0.8, 1.0)); colorize("name", "If|Merge", pink); colorize("name", "const.*", new java.awt.Color(0.7, 0.7, 0.7)); colorize("name", "Local", new java.awt.Color(0.85, 0.85, 0.85)); colorize("name", "\\+|-|\\*|/|&|\\||<<|>>|>>>", cyan); colorize("name", "Comp .*", yellow); +colorize("name", "Virtual.*", green); colorize("notInOwnBlock", "true", red); \ No newline at end of file