# HG changeset patch # User Roland Schatz # Date 1375433733 -7200 # Node ID b401cf2f8d33aa40ffc7f0cff0cc984b8a4d6c2f # Parent a9db73ccb7b99a226717e9264d1112d6ed261278 Make IterativeInliningPhase reentrant. diff -r a9db73ccb7b9 -r b401cf2f8d33 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java Fri Aug 02 10:51:12 2013 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java Fri Aug 02 10:55:33 2013 +0200 @@ -89,6 +89,6 @@ private void processMethod(final String snippet) { graph = parse(snippet); HighTierContext context = new HighTierContext(runtime(), new Assumptions(false), replacements, null, getDefaultPhasePlan(), OptimisticOptimizations.ALL); - new IterativeInliningPhase(null, getDefaultPhasePlan(), OptimisticOptimizations.ALL, new CanonicalizerPhase(true)).apply(graph, context); + new IterativeInliningPhase(new CanonicalizerPhase(true)).apply(graph, context); } } diff -r a9db73ccb7b9 -r b401cf2f8d33 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Fri Aug 02 10:51:12 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Fri Aug 02 10:55:33 2013 +0200 @@ -152,7 +152,7 @@ if (Inline.getValue() && !plan.isPhaseDisabled(InliningPhase.class)) { if (IterativeInlining.getValue()) { - new IterativeInliningPhase(cache, plan, optimisticOpts, canonicalizer).apply(graph, highTierContext); + new IterativeInliningPhase(canonicalizer).apply(graph, highTierContext); } else { new InliningPhase(runtime, null, replacements, assumptions, cache, plan, optimisticOpts).apply(graph); new DeadCodeEliminationPhase().apply(graph); diff -r a9db73ccb7b9 -r b401cf2f8d33 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java Fri Aug 02 10:51:12 2013 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java Fri Aug 02 10:55:33 2013 +0200 @@ -29,23 +29,15 @@ import com.oracle.graal.debug.*; import com.oracle.graal.nodes.*; -import com.oracle.graal.nodes.spi.*; import com.oracle.graal.phases.*; import com.oracle.graal.phases.common.*; import com.oracle.graal.phases.tiers.*; public class IterativeInliningPhase extends BasePhase { - private final PhasePlan plan; - - private final GraphCache cache; - private final OptimisticOptimizations optimisticOpts; private final CanonicalizerPhase canonicalizer; - public IterativeInliningPhase(GraphCache cache, PhasePlan plan, OptimisticOptimizations optimisticOpts, CanonicalizerPhase canonicalizer) { - this.cache = cache; - this.plan = plan; - this.optimisticOpts = optimisticOpts; + public IterativeInliningPhase(CanonicalizerPhase canonicalizer) { this.canonicalizer = canonicalizer; } @@ -75,7 +67,8 @@ Map hints = PEAInliningHints.getValue() ? PartialEscapePhase.getHints(graph) : null; - InliningPhase inlining = new InliningPhase(context.getRuntime(), hints, context.getReplacements(), context.getAssumptions(), cache, plan, optimisticOpts); + InliningPhase inlining = new InliningPhase(context.getRuntime(), hints, context.getReplacements(), context.getAssumptions(), context.getGraphCache(), context.getPhasePlan(), + context.getOptimisticOptimizations()); inlining.setMaxMethodsPerInlining(simple ? 1 : Integer.MAX_VALUE); inlining.apply(graph); progress |= inlining.getInliningCount() > 0;