use of org.graalvm.compiler.truffle.runtime.TruffleInlining in project graal by oracle.
the class BasicTruffleInliningTest method testTruffleFunctionInliningFlag.
@Test
@SuppressWarnings("try")
public void testTruffleFunctionInliningFlag() {
try (TruffleCompilerOptions.TruffleOptionsOverrideScope scope = overrideOptions(TruffleFunctionInlining, false)) {
// @formatter:off
TruffleInlining decisions = builder.target("callee").target("caller").calls("callee", 2).buildDecisions();
// @formatter:on
Assert.assertTrue("Decisions where made!", decisions.getCallSites().isEmpty());
}
}
use of org.graalvm.compiler.truffle.runtime.TruffleInlining in project graal by oracle.
the class TransferToInterpreterTest method test.
@Test
public void test() {
RootNode rootNode = new TestRootNode();
GraalTruffleRuntime runtime = GraalTruffleRuntime.getRuntime();
OptimizedCallTarget target = (OptimizedCallTarget) runtime.createCallTarget(rootNode);
target.call(0);
Assert.assertFalse(target.isValid());
OptionValues options = TruffleCompilerOptions.getOptions();
DebugContext debug = DebugContext.create(options, DebugHandlersFactory.LOADER);
final OptimizedCallTarget compilable = target;
TruffleCompilerImpl compiler = (TruffleCompilerImpl) runtime.newTruffleCompiler();
CompilationIdentifier compilationId = compiler.getCompilationIdentifier(compilable);
TruffleInliningPlan inliningPlan = new TruffleInlining(compilable, new DefaultInliningPolicy());
compiler.compileAST(debug, compilable, inliningPlan, compilationId, null, null);
Assert.assertTrue(target.isValid());
target.call(0);
Assert.assertTrue(target.isValid());
target.call(1);
Assert.assertFalse(target.isValid());
}
use of org.graalvm.compiler.truffle.runtime.TruffleInlining in project graal by oracle.
the class PerformanceTruffleInliningTest method assertRootCallsExplored.
private static void assertRootCallsExplored(OptimizedCallTarget target, int explored) {
final TruffleInlining truffleInliningDecisions = new TruffleInlining(target, POLICY);
int knowsCallSites = 0;
for (TruffleInliningDecision decision : truffleInliningDecisions) {
if (decision.getCallSites().size() > 0) {
knowsCallSites++;
}
}
// The exploration brudged should be blown before exploring the other 2 call sites of the
// root
Assert.assertEquals("Only one target should not know about it's call sites!", explored, knowsCallSites);
}
use of org.graalvm.compiler.truffle.runtime.TruffleInlining in project graal by oracle.
the class TruffleToTruffleCallExceptionHandlerTest method partialEval.
@SuppressWarnings("try")
private static StructuredGraph partialEval(OptimizedCallTarget compilable, Object[] arguments, AllowAssumptions allowAssumptions) {
compilable.call(arguments);
compilable.call(arguments);
compilable.call(arguments);
OptionValues options = TruffleCompilerOptions.getOptions();
DebugContext debug = DebugContext.create(options, DebugHandlersFactory.LOADER);
try (DebugContext.Scope s = debug.scope("TruffleCompilation", new TruffleDebugJavaMethod(compilable))) {
TruffleInlining inliningDecision = new TruffleInlining(compilable, new DefaultInliningPolicy());
SpeculationLog speculationLog = compilable.getSpeculationLog();
return truffleCompiler.getPartialEvaluator().createGraph(debug, compilable, inliningDecision, allowAssumptions, INVALID_COMPILATION_ID, speculationLog, null);
} catch (Throwable e) {
throw debug.handle(e);
}
}
use of org.graalvm.compiler.truffle.runtime.TruffleInlining in project graal by oracle.
the class PartialEvaluationTest method partialEval.
@SuppressWarnings("try")
protected StructuredGraph partialEval(OptimizedCallTarget compilable, Object[] arguments, AllowAssumptions allowAssumptions, CompilationIdentifier compilationId) {
// Executed AST so that all classes are loaded and initialized.
compilable.call(arguments);
compilable.call(arguments);
compilable.call(arguments);
OptionValues options = TruffleCompilerOptions.getOptions();
DebugContext debug = getDebugContext(options);
try (DebugContext.Scope s = debug.scope("TruffleCompilation", new TruffleDebugJavaMethod(compilable))) {
TruffleInlining inliningDecision = new TruffleInlining(compilable, new DefaultInliningPolicy());
SpeculationLog speculationLog = compilable.getSpeculationLog();
return truffleCompiler.getPartialEvaluator().createGraph(debug, compilable, inliningDecision, allowAssumptions, compilationId, speculationLog, null);
} catch (Throwable e) {
throw debug.handle(e);
}
}
Aggregations