# HG changeset patch # User Lukas Stadler # Date 1371219949 -7200 # Node ID 30499c84823d8247ab44da1b938293fcfe527a5e # Parent 09baba95f1aee0f59dc7395d866c1a5854013e66 remove CullFrameStatesPhase diff -r 09baba95f1ae -r 30499c84823d graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/BoxingEliminationTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/BoxingEliminationTest.java Fri Jun 14 16:24:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/BoxingEliminationTest.java Fri Jun 14 16:25:49 2013 +0200 @@ -310,7 +310,6 @@ HighTierContext context = new HighTierContext(runtime(), assumptions, replacements); new InliningPhase(runtime(), null, replacements, assumptions, null, getDefaultPhasePlan(), OptimisticOptimizations.ALL).apply(graph); new PartialEscapePhase(false, new CanonicalizerPhase(true)).apply(graph, context); - new CullFrameStatesPhase().apply(graph); } private void compareGraphs(final String snippet, final String referenceSnippet) { @@ -335,7 +334,6 @@ canonicalizer.apply(graph, context); new PartialEscapePhase(false, canonicalizer).apply(graph, context); - new CullFrameStatesPhase().apply(graph); new DeadCodeEliminationPhase().apply(graph); canonicalizer.apply(graph, context); diff -r 09baba95f1ae -r 30499c84823d graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PartialEscapeAnalysisTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PartialEscapeAnalysisTest.java Fri Jun 14 16:24:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PartialEscapeAnalysisTest.java Fri Jun 14 16:25:49 2013 +0200 @@ -168,7 +168,9 @@ canonicalizer.apply(graph, context); new PartialEscapePhase(false, canonicalizer).apply(graph, context); - new CullFrameStatesPhase().apply(graph); + for (MergeNode merge : graph.getNodes(MergeNode.class)) { + merge.setStateAfter(null); + } new DeadCodeEliminationPhase().apply(graph); canonicalizer.apply(graph, context); return graph; diff -r 09baba95f1ae -r 30499c84823d graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/HighTier.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/HighTier.java Fri Jun 14 16:24:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/HighTier.java Fri Jun 14 16:25:49 2013 +0200 @@ -60,10 +60,6 @@ } appendPhase(new RemoveValueProxyPhase()); - if (CullFrameStates.getValue()) { - appendPhase(new CullFrameStatesPhase()); - } - if (OptCanonicalizer.getValue()) { appendPhase(canonicalizer); } diff -r 09baba95f1ae -r 30499c84823d graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CullFrameStatesPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CullFrameStatesPhase.java Fri Jun 14 16:24:42 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.oracle.graal.phases.common; - -import java.util.*; - -import com.oracle.graal.debug.*; -import com.oracle.graal.nodes.*; -import com.oracle.graal.nodes.util.*; -import com.oracle.graal.phases.*; -import com.oracle.graal.phases.graph.*; - -/** - * This phase culls unused FrameStates from the graph. It does a post order iteration over the - * graph, and - */ -public class CullFrameStatesPhase extends Phase { - - private static final DebugMetric metricFrameStatesCulled = Debug.metric("FrameStatesCulled"); - private static final DebugMetric metricNodesRemoved = Debug.metric("NodesRemoved"); - private static final DebugMetric metricMergesTraversed = Debug.metric("MergesTraversed"); - - @Override - protected void run(StructuredGraph graph) { - int initialNodes = graph.getNodeCount(); - new CullFrameStates(graph.start(), new State(null)).apply(); - metricNodesRemoved.add(initialNodes - graph.getNodeCount()); - } - - public static class State implements MergeableState { - - private FrameState lastFrameState; - - public State(FrameState lastFrameState) { - this.lastFrameState = lastFrameState; - } - - @Override - public boolean merge(MergeNode merge, List withStates) { - FrameState stateAfter = merge.stateAfter(); - if (merge instanceof LoopBeginNode) { - if (stateAfter != null) { - lastFrameState = stateAfter; - } - return true; - } - metricMergesTraversed.increment(); - if (stateAfter != null) { - for (State other : withStates) { - if (other.lastFrameState != lastFrameState) { - lastFrameState = stateAfter; - return true; - } - } - metricFrameStatesCulled.increment(); - merge.setStateAfter(null); - if (stateAfter.usages().isEmpty()) { - GraphUtil.killWithUnusedFloatingInputs(stateAfter); - } - } - return true; - } - - @Override - public void loopBegin(LoopBeginNode loopBegin) { - } - - @Override - public void loopEnds(LoopBeginNode loopBegin, List loopEndStates) { - } - - @Override - public void afterSplit(AbstractBeginNode node) { - } - - @Override - public State clone() { - return new State(lastFrameState); - } - } - - public static class CullFrameStates extends PostOrderNodeIterator { - - public CullFrameStates(FixedNode start, State initialState) { - super(start, initialState); - } - - @Override - protected void node(FixedNode node) { - if (node instanceof StateSplit) { - FrameState stateAfter = ((StateSplit) node).stateAfter(); - if (stateAfter != null) { - state.lastFrameState = stateAfter; - } - } - } - } - -} diff -r 09baba95f1ae -r 30499c84823d graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java Fri Jun 14 16:24:42 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java Fri Jun 14 16:25:49 2013 +0200 @@ -312,9 +312,6 @@ new CanonicalizerPhase.Instance(runtime, assumptions, !AOTCompilation.getValue()).apply(newGraph); } - if (CullFrameStates.getValue()) { - new CullFrameStatesPhase().apply(newGraph); - } if (CacheGraphs.getValue() && cache != null) { cache.put(newGraph.copy(), hasMatureProfilingInfo); } diff -r 09baba95f1ae -r 30499c84823d graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java Fri Jun 14 16:24:42 2013 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java Fri Jun 14 16:25:49 2013 +0200 @@ -198,8 +198,6 @@ @Option(help = "") public static final OptionValue ConditionalElimination = new OptionValue<>(true); @Option(help = "") - public static final OptionValue CullFrameStates = new OptionValue<>(false); - @Option(help = "") public static final OptionValue UseProfilingInformation = new OptionValue<>(true); @Option(help = "") static final OptionValue RemoveNeverExecutedCode = new OptionValue<>(true);