Search in sources :

Example 11 with TruffleInlining

use of org.graalvm.compiler.truffle.runtime.TruffleInlining in project graal by oracle.

the class PerformanceTruffleInliningTest method reflectivelyGetExploreMethod.

private static Method reflectivelyGetExploreMethod() {
    try {
        final Class<?> truffleInliningClass = Class.forName(TruffleInlining.class.getName());
        final Class<?>[] args = { List.class, int.class, TruffleInliningPolicy.class, int[].class, Map.class };
        final Method exploreCallSitesMethod = truffleInliningClass.getDeclaredMethod("exploreCallSites", args);
        ReflectionUtils.setAccessible(exploreCallSitesMethod, true);
        return exploreCallSitesMethod;
    } catch (ClassNotFoundException e) {
        Assert.assertFalse("Could not find TruffleInlining class", true);
        return null;
    } catch (NoSuchMethodException e) {
        Assert.assertFalse("Could not find exploreCallSites method", true);
        return null;
    }
}
Also used : TruffleInlining(org.graalvm.compiler.truffle.runtime.TruffleInlining) Method(java.lang.reflect.Method)

Example 12 with TruffleInlining

use of org.graalvm.compiler.truffle.runtime.TruffleInlining 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));
        }
    }
}
Also used : CompilationIdentifier(org.graalvm.compiler.core.common.CompilationIdentifier) OptionValues(org.graalvm.compiler.options.OptionValues) TruffleCompilerImpl(org.graalvm.compiler.truffle.compiler.TruffleCompilerImpl) OptimizedCallTarget(org.graalvm.compiler.truffle.runtime.OptimizedCallTarget) ByteArrayOutputStream(java.io.ByteArrayOutputStream) LogStream(org.graalvm.compiler.debug.LogStream) DebugContext(org.graalvm.compiler.debug.DebugContext) TruffleInliningPlan(org.graalvm.compiler.truffle.common.TruffleInliningPlan) GraalTruffleRuntime(org.graalvm.compiler.truffle.runtime.GraalTruffleRuntime) DefaultInliningPolicy(org.graalvm.compiler.truffle.runtime.DefaultInliningPolicy) TruffleInlining(org.graalvm.compiler.truffle.runtime.TruffleInlining) TTY(org.graalvm.compiler.debug.TTY) TruffleOptionsOverrideScope(org.graalvm.compiler.truffle.common.TruffleCompilerOptions.TruffleOptionsOverrideScope) DebugCloseable(org.graalvm.compiler.debug.DebugCloseable)

Example 13 with TruffleInlining

use of org.graalvm.compiler.truffle.runtime.TruffleInlining in project graal by oracle.

the class BasicTruffleInliningTest method testFrequency.

@Test
public void testFrequency() {
    // @formatter:off
    TruffleInlining decisions = builder.target("callee").target("caller").execute(4).calls("callee", 2).buildDecisions();
    // @formatter:on
    assertInlined(decisions, "callee");
    Assert.assertEquals(0.5, decisions.getCallSites().get(0).getProfile().getFrequency(), 0);
}
Also used : TruffleInlining(org.graalvm.compiler.truffle.runtime.TruffleInlining) Test(org.junit.Test)

Example 14 with TruffleInlining

use of org.graalvm.compiler.truffle.runtime.TruffleInlining in project graal by oracle.

the class BasicTruffleInliningTest method testSimpleInline.

@Test
public void testSimpleInline() {
    // @formatter:off
    TruffleInlining decisions = builder.target("callee").target("caller").calls("callee").buildDecisions();
    // @formatter:on
    assertInlined(decisions, "callee");
}
Also used : TruffleInlining(org.graalvm.compiler.truffle.runtime.TruffleInlining) Test(org.junit.Test)

Example 15 with TruffleInlining

use of org.graalvm.compiler.truffle.runtime.TruffleInlining in project graal by oracle.

the class BasicTruffleInliningTest method testInlineBigWithCallSites.

@Test
public void testInlineBigWithCallSites() {
    // @formatter:off
    TruffleInlining decisions = builder.target("callee", (TruffleCompilerOptions.getValue(TruffleInliningMaxCallerSize) / 3) - 3).target("caller").calls("callee").calls("callee").calls("callee").buildDecisions(true);
    // @formatter:on
    Assert.assertEquals(3, countInlines(decisions, "callee"));
}
Also used : TruffleInlining(org.graalvm.compiler.truffle.runtime.TruffleInlining) Test(org.junit.Test)

Aggregations

TruffleInlining (org.graalvm.compiler.truffle.runtime.TruffleInlining)21 Test (org.junit.Test)16 DebugContext (org.graalvm.compiler.debug.DebugContext)4 OptionValues (org.graalvm.compiler.options.OptionValues)4 DefaultInliningPolicy (org.graalvm.compiler.truffle.runtime.DefaultInliningPolicy)4 SpeculationLog (jdk.vm.ci.meta.SpeculationLog)2 CompilationIdentifier (org.graalvm.compiler.core.common.CompilationIdentifier)2 TruffleDebugJavaMethod (org.graalvm.compiler.truffle.common.TruffleDebugJavaMethod)2 TruffleInliningPlan (org.graalvm.compiler.truffle.common.TruffleInliningPlan)2 TruffleCompilerImpl (org.graalvm.compiler.truffle.compiler.TruffleCompilerImpl)2 GraalTruffleRuntime (org.graalvm.compiler.truffle.runtime.GraalTruffleRuntime)2 OptimizedCallTarget (org.graalvm.compiler.truffle.runtime.OptimizedCallTarget)2 RootNode (com.oracle.truffle.api.nodes.RootNode)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 Method (java.lang.reflect.Method)1 DebugCloseable (org.graalvm.compiler.debug.DebugCloseable)1 LogStream (org.graalvm.compiler.debug.LogStream)1 TTY (org.graalvm.compiler.debug.TTY)1 TruffleCompilerOptions (org.graalvm.compiler.truffle.common.TruffleCompilerOptions)1 TruffleOptionsOverrideScope (org.graalvm.compiler.truffle.common.TruffleCompilerOptions.TruffleOptionsOverrideScope)1