# HG changeset patch # User Christian Haeubl # Date 1373025617 -7200 # Node ID b02b3c6a59b60c4f99512e8476826c91cf3b8cf6 # Parent 57b9a8c7cea8145e91f46f1214300248d7d257aa Added an inlining policy that tries to inline all calls. diff -r 57b9a8c7cea8 -r b02b3c6a59b6 graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/WriteBarrierAdditionTest.java --- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/WriteBarrierAdditionTest.java Thu Jul 04 15:56:22 2013 +0200 +++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/WriteBarrierAdditionTest.java Fri Jul 05 14:00:17 2013 +0200 @@ -40,8 +40,6 @@ import com.oracle.graal.nodes.spi.Lowerable.LoweringType; import com.oracle.graal.phases.*; import com.oracle.graal.phases.common.*; -import com.oracle.graal.phases.common.InliningUtil.InlineInfo; -import com.oracle.graal.phases.common.InliningUtil.InliningPolicy; import com.oracle.graal.phases.tiers.*; /** @@ -206,7 +204,7 @@ public void run() { StructuredGraph graph = parse(snippet); HighTierContext context = new HighTierContext(runtime(), new Assumptions(false), replacements); - new InliningPhase(runtime(), replacements, context.getAssumptions(), null, getDefaultPhasePlan(), OptimisticOptimizations.ALL, new InlineAllPolicy()).apply(graph); + new InliningPhase(runtime(), replacements, context.getAssumptions(), null, getDefaultPhasePlan(), OptimisticOptimizations.ALL, new InliningPhase.InlineEverythingPolicy()).apply(graph); new LoweringPhase(LoweringType.BEFORE_GUARDS).apply(graph, context); new WriteBarrierAdditionPhase().apply(graph); Debug.dump(graph, "After Write Barrier Addition"); @@ -253,17 +251,4 @@ HotSpotInstalledCode code = getInstalledCode(snippet); code.execute(a, b, c); } - - final class InlineAllPolicy implements InliningPolicy { - - @Override - public boolean continueInlining(StructuredGraph graph) { - return true; - } - - @Override - public boolean isWorthInlining(InlineInfo info, int inliningDepth, double probability, double relevance, boolean fullyProcessed) { - return true; - } - } } diff -r 57b9a8c7cea8 -r b02b3c6a59b6 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 Thu Jul 04 15:56:22 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java Fri Jul 05 14:00:17 2013 +0200 @@ -423,7 +423,7 @@ } } - private static class GreedyInliningPolicy extends AbstractInliningPolicy { + private static final class GreedyInliningPolicy extends AbstractInliningPolicy { public GreedyInliningPolicy(Replacements replacements, Map hints) { super(replacements, hints); @@ -480,6 +480,20 @@ } } + public static final class InlineEverythingPolicy implements InliningPolicy { + + public boolean continueInlining(StructuredGraph graph) { + if (graph.getNodeCount() >= MaximumDesiredSize.getValue()) { + throw new BailoutException("Inline all calls failed. The resulting graph is too large."); + } + return true; + } + + public boolean isWorthInlining(InlineInfo info, int inliningDepth, double probability, double relevance, boolean fullyProcessed) { + return true; + } + } + private static class InliningIterator { private final FixedNode start;