use of org.graalvm.compiler.core.common.CompilationIdentifier 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.core.common.CompilationIdentifier in project graal by oracle.
the class PartialEvaluationTest method assertPartialEvalEquals.
protected OptimizedCallTarget assertPartialEvalEquals(String methodName, RootNode root, Object[] arguments) {
final OptimizedCallTarget compilable = (OptimizedCallTarget) Truffle.getRuntime().createCallTarget(root);
CompilationIdentifier compilationId = getCompilationId(compilable);
StructuredGraph actual = partialEval(compilable, arguments, AllowAssumptions.YES, compilationId);
truffleCompiler.compilePEGraph(actual, methodName, null, compilable, asCompilationRequest(compilationId), null);
removeFrameStates(actual);
StructuredGraph expected = parseForComparison(methodName, actual.getDebug());
Assert.assertEquals(getCanonicalGraphString(expected, true, true), getCanonicalGraphString(actual, true, true));
return compilable;
}
use of org.graalvm.compiler.core.common.CompilationIdentifier in project graal by oracle.
the class PartialEvaluationTest method compileHelper.
protected OptimizedCallTarget compileHelper(String methodName, RootNode root, Object[] arguments) {
final OptimizedCallTarget compilable = (OptimizedCallTarget) (Truffle.getRuntime()).createCallTarget(root);
CompilationIdentifier compilationId = getCompilationId(compilable);
StructuredGraph actual = partialEval(compilable, arguments, AllowAssumptions.YES, compilationId);
truffleCompiler.compilePEGraph(actual, methodName, null, compilable, asCompilationRequest(compilationId), null);
return compilable;
}
use of org.graalvm.compiler.core.common.CompilationIdentifier in project graal by oracle.
the class PerformanceWarningTest method testHelper.
@SuppressWarnings("try")
private static void testHelper(RootNode rootNode, boolean expectException, String... outputStrings) {
GraalTruffleRuntime runtime = GraalTruffleRuntime.getRuntime();
OptimizedCallTarget target = (OptimizedCallTarget) runtime.createCallTarget(rootNode);
// Compile and capture output to TTY.
ByteArrayOutputStream outContent = new ByteArrayOutputStream();
boolean seenException = false;
try (TTY.Filter filter = new TTY.Filter(new LogStream(outContent))) {
try (TruffleOptionsOverrideScope scope = TruffleCompilerOptions.overrideOptions(TruffleCompilerOptions.TraceTrufflePerformanceWarnings, Boolean.TRUE);
TruffleOptionsOverrideScope scope2 = TruffleCompilerOptions.overrideOptions(TruffleCompilerOptions.TrufflePerformanceWarningsAreFatal, Boolean.TRUE)) {
OptionValues options = TruffleCompilerOptions.getOptions();
DebugContext debug = DebugContext.create(options, DebugHandlersFactory.LOADER);
try (DebugCloseable d = debug.disableIntercept();
DebugContext.Scope s = debug.scope("PerformanceWarningTest")) {
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);
}
} catch (AssertionError e) {
seenException = true;
if (!expectException) {
throw new AssertionError("Unexpected exception caught", e);
}
}
}
if (expectException && !seenException) {
Assert.assertTrue("Expected exception not caught.", false);
}
// Check output on TTY.
String output = outContent.toString();
if (outputStrings == EMPTY_PERF_WARNINGS) {
Assert.assertEquals("", output);
} else {
for (String s : outputStrings) {
Assert.assertTrue(String.format("Root node class %s: \"%s\" not found in output \"%s\"", rootNode.getClass(), s, output), output.contains(s));
}
}
}
use of org.graalvm.compiler.core.common.CompilationIdentifier in project graal by oracle.
the class GraalCompilerState method prepareRequest.
/**
* Copies the {@link #originalGraph original graph} and prepares the {@link #request}.
*
* The {@link Suites} can be changed by overriding {@link #createSuites}. {@link LIRSuites} can
* be changed by overriding {@link #createLIRSuites}.
*/
protected final void prepareRequest() {
assert originalGraph != null : "call initialzeMethod first";
CompilationIdentifier compilationId = backend.getCompilationIdentifier(originalGraph.method());
graph = originalGraph.copyWithIdentifier(compilationId, originalGraph.getDebug());
assert !graph.isFrozen();
ResolvedJavaMethod installedCodeOwner = graph.method();
request = new Request<>(graph, installedCodeOwner, getProviders(), getBackend(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL, graph.getProfilingInfo(), createSuites(getOptions()), createLIRSuites(getOptions()), new CompilationResult(graph.compilationId()), CompilationResultBuilderFactory.Default);
}
Aggregations