# HG changeset patch # User Thomas Wuerthinger # Date 1451657778 -3600 # Node ID 9c2976c7d96af9521be36dec0873f2aa9a5b6e3a # Parent 2e3a5ffe5654722eb61a44931dfad08147ac9a5b Reduce usage of #filterInterface; introduce utility StructuredGraph#clearAllStateAfter. diff -r 2e3a5ffe5654 -r 9c2976c7d96a graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/LoopUnswitchTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/LoopUnswitchTest.java Fri Jan 01 14:52:37 2016 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/LoopUnswitchTest.java Fri Jan 01 15:16:18 2016 +0100 @@ -27,10 +27,8 @@ import com.oracle.graal.debug.Debug; import com.oracle.graal.debug.Debug.Scope; import com.oracle.graal.debug.DebugDumpScope; -import com.oracle.graal.graph.Node; import com.oracle.graal.loop.DefaultLoopPolicies; import com.oracle.graal.loop.phases.LoopUnswitchingPhase; -import com.oracle.graal.nodes.StateSplit; import com.oracle.graal.nodes.StructuredGraph; import com.oracle.graal.nodes.StructuredGraph.AllowAssumptions; import com.oracle.graal.phases.common.CanonicalizerPhase; @@ -132,12 +130,8 @@ new LoopUnswitchingPhase(new DefaultLoopPolicies()).apply(graph); // Framestates create comparison problems - for (Node stateSplit : graph.getNodes().filterInterface(StateSplit.class)) { - ((StateSplit) stateSplit).setStateAfter(null); - } - for (Node stateSplit : referenceGraph.getNodes().filterInterface(StateSplit.class)) { - ((StateSplit) stateSplit).setStateAfter(null); - } + graph.clearAllStateAfter(); + referenceGraph.clearAllStateAfter(); new CanonicalizerPhase().apply(graph, new PhaseContext(getProviders())); new CanonicalizerPhase().apply(referenceGraph, new PhaseContext(getProviders())); diff -r 2e3a5ffe5654 -r 9c2976c7d96a graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MemoryScheduleTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MemoryScheduleTest.java Fri Jan 01 14:52:37 2016 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MemoryScheduleTest.java Fri Jan 01 15:16:18 2016 +0100 @@ -39,17 +39,14 @@ import com.oracle.graal.debug.Debug.Scope; import com.oracle.graal.graph.Node; import com.oracle.graal.graph.iterators.NodeIterable; -import com.oracle.graal.nodes.FrameState; import com.oracle.graal.nodes.ReturnNode; import com.oracle.graal.nodes.StartNode; -import com.oracle.graal.nodes.StateSplit; import com.oracle.graal.nodes.StructuredGraph; import com.oracle.graal.nodes.StructuredGraph.AllowAssumptions; import com.oracle.graal.nodes.cfg.Block; import com.oracle.graal.nodes.memory.FloatingReadNode; import com.oracle.graal.nodes.memory.WriteNode; import com.oracle.graal.nodes.spi.LoweringTool; -import com.oracle.graal.nodes.util.GraphUtil; import com.oracle.graal.options.OptionValue; import com.oracle.graal.options.OptionValue.OverrideScope; import com.oracle.graal.phases.OptimisticOptimizations; @@ -736,15 +733,7 @@ } new LoweringPhase(canonicalizer, LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context); if (mode == TestMode.WITHOUT_FRAMESTATES || mode == TestMode.INLINED_WITHOUT_FRAMESTATES) { - for (Node node : graph.getNodes()) { - if (node instanceof StateSplit) { - FrameState stateAfter = ((StateSplit) node).stateAfter(); - if (stateAfter != null) { - ((StateSplit) node).setStateAfter(null); - GraphUtil.killWithUnusedFloatingInputs(stateAfter); - } - } - } + graph.clearAllStateAfter(); } Debug.dump(graph, "after removal of framestates"); diff -r 2e3a5ffe5654 -r 9c2976c7d96a graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/NodePredicates.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/NodePredicates.java Fri Jan 01 14:52:37 2016 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/NodePredicates.java Fri Jan 01 15:16:18 2016 +0100 @@ -51,10 +51,6 @@ return new EqualsPredicate(n); } - public static NodePredicate not(NodePredicate a) { - return a.negate(); - } - public static NegativeTypePredicate isNotA(Class clazz) { return new NegativeTypePredicate(clazz); } diff -r 2e3a5ffe5654 -r 9c2976c7d96a graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/IfNodeCanonicalizationTest.java --- a/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/IfNodeCanonicalizationTest.java Fri Jan 01 14:52:37 2016 +0100 +++ b/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/IfNodeCanonicalizationTest.java Fri Jan 01 15:16:18 2016 +0100 @@ -29,7 +29,6 @@ import com.oracle.graal.api.directives.GraalDirectives; import com.oracle.graal.compiler.test.GraalCompilerTest; import com.oracle.graal.graph.Node; -import com.oracle.graal.nodes.AbstractMergeNode; import com.oracle.graal.nodes.IfNode; import com.oracle.graal.nodes.LogicNode; import com.oracle.graal.nodes.StructuredGraph; @@ -157,9 +156,7 @@ PhaseContext context = new PhaseContext(getProviders()); CanonicalizerPhase canonicalizer = new CanonicalizerPhase(); - for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.TYPE)) { - merge.setStateAfter(null); - } + graph.clearAllStateAfter(); canonicalizer.apply(graph, context); new ConvertDeoptimizeToGuardPhase().apply(graph, context); diff -r 2e3a5ffe5654 -r 9c2976c7d96a graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Fri Jan 01 14:52:37 2016 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Fri Jan 01 15:16:18 2016 +0100 @@ -597,4 +597,16 @@ public SpeculationLog getSpeculationLog() { return speculationLog; } + + public final void clearAllStateAfter() { + for (Node node : getNodes()) { + if (node instanceof StateSplit) { + FrameState stateAfter = ((StateSplit) node).stateAfter(); + if (stateAfter != null) { + ((StateSplit) node).setStateAfter(null); + GraphUtil.killWithUnusedFloatingInputs(stateAfter); + } + } + } + } } diff -r 2e3a5ffe5654 -r 9c2976c7d96a graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java Fri Jan 01 14:52:37 2016 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java Fri Jan 01 15:16:18 2016 +0100 @@ -38,7 +38,6 @@ import jdk.vm.ci.meta.Signature; import com.oracle.graal.graph.Graph; -import com.oracle.graal.graph.Node; import com.oracle.graal.java.FrameStateBuilder; import com.oracle.graal.java.GraphBuilderPhase; import com.oracle.graal.nodes.AbstractBeginNode; @@ -52,7 +51,6 @@ import com.oracle.graal.nodes.InvokeNode; import com.oracle.graal.nodes.LogicNode; import com.oracle.graal.nodes.MergeNode; -import com.oracle.graal.nodes.StateSplit; import com.oracle.graal.nodes.StructuredGraph; import com.oracle.graal.nodes.StructuredGraph.AllowAssumptions; import com.oracle.graal.nodes.ValueNode; @@ -264,11 +262,7 @@ new GraphBuilderPhase.Instance(metaAccess, providers.getStampProvider(), providers.getConstantReflection(), config, OptimisticOptimizations.NONE, initialReplacementContext).apply(calleeGraph); // Remove all frame states from inlinee - for (Node node : calleeGraph.getNodes()) { - if (node instanceof StateSplit) { - ((StateSplit) node).setStateAfter(null); - } - } + calleeGraph.clearAllStateAfter(); new DeadCodeEliminationPhase(Optionality.Required).apply(calleeGraph); InliningUtil.inline(invoke, calleeGraph, false, null);