Mercurial > hg > graal-compiler
changeset 10626:b02b3c6a59b6
Added an inlining policy that tries to inline all calls.
author | Christian Haeubl <haeubl@ssw.jku.at> |
---|---|
date | Fri, 05 Jul 2013 14:00:17 +0200 |
parents | 57b9a8c7cea8 |
children | 4acf032748b9 |
files | graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/WriteBarrierAdditionTest.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java |
diffstat | 2 files changed, 16 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- 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; - } - } }
--- 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<Invoke, Double> 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;