--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java Sat Dec 08 05:04:19 2018 +0100
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/GraalCompilerTest.java Sat Dec 08 00:56:10 2018 -0800
@@ -83,6 +83,7 @@
import org.graalvm.compiler.nodes.FixedWithNextNode;
import org.graalvm.compiler.nodes.FrameState;
import org.graalvm.compiler.nodes.FullInfopointNode;
+import org.graalvm.compiler.nodes.Invoke;
import org.graalvm.compiler.nodes.InvokeNode;
import org.graalvm.compiler.nodes.InvokeWithExceptionNode;
import org.graalvm.compiler.nodes.ParameterNode;
@@ -111,6 +112,9 @@
import org.graalvm.compiler.phases.PhaseSuite;
import org.graalvm.compiler.phases.common.CanonicalizerPhase;
import org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase;
+import org.graalvm.compiler.phases.common.inlining.InliningPhase;
+import org.graalvm.compiler.phases.common.inlining.info.InlineInfo;
+import org.graalvm.compiler.phases.common.inlining.policy.GreedyInliningPolicy;
import org.graalvm.compiler.phases.schedule.SchedulePhase;
import org.graalvm.compiler.phases.schedule.SchedulePhase.SchedulingStrategy;
import org.graalvm.compiler.phases.tiers.HighTierContext;
@@ -597,11 +601,11 @@
}
protected HighTierContext getDefaultHighTierContext() {
- return new HighTierContext(getProviders(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL);
+ return new HighTierContext(getProviders(), getDefaultGraphBuilderSuite(), getOptimisticOptimizations());
}
protected MidTierContext getDefaultMidTierContext() {
- return new MidTierContext(getProviders(), getTargetProvider(), OptimisticOptimizations.ALL, null);
+ return new MidTierContext(getProviders(), getTargetProvider(), getOptimisticOptimizations(), null);
}
protected SnippetReflectionProvider getSnippetReflection() {
@@ -632,6 +636,30 @@
return getProviders().getLowerer();
}
+ protected final BasePhase<HighTierContext> createInliningPhase() {
+ return createInliningPhase(new CanonicalizerPhase());
+ }
+
+ protected BasePhase<HighTierContext> createInliningPhase(CanonicalizerPhase canonicalizer) {
+ return createInliningPhase(null, canonicalizer);
+ }
+
+ static class GreedyTestInliningPolicy extends GreedyInliningPolicy {
+ GreedyTestInliningPolicy(Map<Invoke, Double> hints) {
+ super(hints);
+ }
+
+ @Override
+ protected int previousLowLevelGraphSize(InlineInfo info) {
+ // Ignore previous compiles for tests
+ return 0;
+ }
+ }
+
+ protected BasePhase<HighTierContext> createInliningPhase(Map<Invoke, Double> hints, CanonicalizerPhase canonicalizer) {
+ return new InliningPhase(new GreedyTestInliningPolicy(hints), canonicalizer);
+ }
+
protected CompilationIdentifier getCompilationId(ResolvedJavaMethod method) {
return getBackend().getCompilationIdentifier(method);
}
@@ -1039,6 +1067,10 @@
return compile(installedCodeOwner, graph, new CompilationResult(compilationId), compilationId, options);
}
+ protected OptimisticOptimizations getOptimisticOptimizations() {
+ return OptimisticOptimizations.ALL;
+ }
+
/**
* Compiles a given method.
*
@@ -1055,7 +1087,7 @@
DebugContext debug = graphToCompile.getDebug();
try (DebugContext.Scope s = debug.scope("Compile", graphToCompile)) {
assert options != null;
- Request<CompilationResult> request = new Request<>(graphToCompile, installedCodeOwner, getProviders(), getBackend(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL,
+ Request<CompilationResult> request = new Request<>(graphToCompile, installedCodeOwner, getProviders(), getBackend(), getDefaultGraphBuilderSuite(), getOptimisticOptimizations(),
graphToCompile.getProfilingInfo(), createSuites(options), createLIRSuites(options), compilationResult, CompilationResultBuilderFactory.Default, true);
return GraalCompiler.compile(request);
} catch (Throwable e) {
@@ -1074,7 +1106,7 @@
}
protected void applyFrontEnd(StructuredGraph graph) {
- GraalCompiler.emitFrontEnd(getProviders(), getBackend(), graph, getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL, graph.getProfilingInfo(), createSuites(graph.getOptions()));
+ GraalCompiler.emitFrontEnd(getProviders(), getBackend(), graph, getDefaultGraphBuilderSuite(), getOptimisticOptimizations(), graph.getProfilingInfo(), createSuites(graph.getOptions()));
}
protected StructuredGraph lastCompiledGraph;