Search in sources :

Example 16 with AbstractTestNode

use of org.graalvm.compiler.truffle.test.nodes.AbstractTestNode in project graal by oracle.

the class SimplePartialEvaluationTest method synchronizedExceptionMerge.

@Test
public void synchronizedExceptionMerge() {
    /*
         * Multiple non-inlineable methods with exception edges called from a synchronized method
         * lead to a complicated Graal graph that involves the BytecodeFrame.UNWIND_BCI. This test
         * checks that partial evaluation handles that case correctly.
         */
    FrameDescriptor fd = new FrameDescriptor();
    AbstractTestNode result = new SynchronizedExceptionMergeNode();
    RootNode rootNode = new RootTestNode(fd, "synchronizedExceptionMerge", result);
    OptimizedCallTarget compilable = compileHelper("synchronizedExceptionMerge", rootNode, new Object[0]);
    Assert.assertEquals(42, compilable.call(new Object[0]));
}
Also used : FrameDescriptor(com.oracle.truffle.api.frame.FrameDescriptor) RootNode(com.oracle.truffle.api.nodes.RootNode) AbstractTestNode(org.graalvm.compiler.truffle.test.nodes.AbstractTestNode) SynchronizedExceptionMergeNode(org.graalvm.compiler.truffle.test.nodes.SynchronizedExceptionMergeNode) OptimizedCallTarget(org.graalvm.compiler.truffle.runtime.OptimizedCallTarget) RootTestNode(org.graalvm.compiler.truffle.test.nodes.RootTestNode) Test(org.junit.Test)

Example 17 with AbstractTestNode

use of org.graalvm.compiler.truffle.test.nodes.AbstractTestNode in project graal by oracle.

the class SimplePartialEvaluationTest method intrinsicVirtual.

@Test
public void intrinsicVirtual() {
    /*
         * The intrinsic for String.equals() is inlined late during Truffle partial evaluation,
         * because we call equals() on a value that has the static type Object, but during partial
         * evaluation the more precise type String is known.
         */
    FrameDescriptor fd = new FrameDescriptor();
    AbstractTestNode result = new ObjectEqualsNode("abc", "abf");
    RootNode rootNode = new RootTestNode(fd, "intrinsicVirtual", result);
    OptimizedCallTarget compilable = compileHelper("intrinsicVirtual", rootNode, new Object[0]);
    Assert.assertEquals(42, compilable.call(new Object[0]));
}
Also used : FrameDescriptor(com.oracle.truffle.api.frame.FrameDescriptor) RootNode(com.oracle.truffle.api.nodes.RootNode) AbstractTestNode(org.graalvm.compiler.truffle.test.nodes.AbstractTestNode) ObjectEqualsNode(org.graalvm.compiler.truffle.test.nodes.ObjectEqualsNode) OptimizedCallTarget(org.graalvm.compiler.truffle.runtime.OptimizedCallTarget) RootTestNode(org.graalvm.compiler.truffle.test.nodes.RootTestNode) Test(org.junit.Test)

Example 18 with AbstractTestNode

use of org.graalvm.compiler.truffle.test.nodes.AbstractTestNode in project graal by oracle.

the class SimplePartialEvaluationTest method addConstants.

@Test
public void addConstants() {
    FrameDescriptor fd = new FrameDescriptor();
    AbstractTestNode result = new AddTestNode(new ConstantTestNode(40), new ConstantTestNode(2));
    assertPartialEvalEquals("constant42", new RootTestNode(fd, "addConstants", result));
}
Also used : FrameDescriptor(com.oracle.truffle.api.frame.FrameDescriptor) AbstractTestNode(org.graalvm.compiler.truffle.test.nodes.AbstractTestNode) ConstantTestNode(org.graalvm.compiler.truffle.test.nodes.ConstantTestNode) RootTestNode(org.graalvm.compiler.truffle.test.nodes.RootTestNode) AddTestNode(org.graalvm.compiler.truffle.test.nodes.AddTestNode) Test(org.junit.Test)

Example 19 with AbstractTestNode

use of org.graalvm.compiler.truffle.test.nodes.AbstractTestNode in project graal by oracle.

the class SimplePartialEvaluationTest method allowedRecursion.

@Test
public void allowedRecursion() {
    /* Recursion depth just below the threshold that reports it as too deep recursion. */
    FrameDescriptor fd = new FrameDescriptor();
    AbstractTestNode result = new RecursionTestNode(TruffleCompilerOptions.getValue(PEGraphDecoder.Options.InliningDepthError) - 5);
    assertPartialEvalEquals("constant42", new RootTestNode(fd, "allowedRecursion", result));
}
Also used : FrameDescriptor(com.oracle.truffle.api.frame.FrameDescriptor) AbstractTestNode(org.graalvm.compiler.truffle.test.nodes.AbstractTestNode) RecursionTestNode(org.graalvm.compiler.truffle.test.nodes.RecursionTestNode) RootTestNode(org.graalvm.compiler.truffle.test.nodes.RootTestNode) Test(org.junit.Test)

Example 20 with AbstractTestNode

use of org.graalvm.compiler.truffle.test.nodes.AbstractTestNode in project graal by oracle.

the class SimplePartialEvaluationTest method constantValue.

@Test
public void constantValue() {
    FrameDescriptor fd = new FrameDescriptor();
    AbstractTestNode result = new ConstantTestNode(42);
    assertPartialEvalEquals("constant42", new RootTestNode(fd, "constantValue", result));
}
Also used : FrameDescriptor(com.oracle.truffle.api.frame.FrameDescriptor) AbstractTestNode(org.graalvm.compiler.truffle.test.nodes.AbstractTestNode) ConstantTestNode(org.graalvm.compiler.truffle.test.nodes.ConstantTestNode) RootTestNode(org.graalvm.compiler.truffle.test.nodes.RootTestNode) Test(org.junit.Test)

Aggregations

AbstractTestNode (org.graalvm.compiler.truffle.test.nodes.AbstractTestNode)46 Test (org.junit.Test)45 FrameDescriptor (com.oracle.truffle.api.frame.FrameDescriptor)43 RootTestNode (org.graalvm.compiler.truffle.test.nodes.RootTestNode)43 ConstantTestNode (org.graalvm.compiler.truffle.test.nodes.ConstantTestNode)13 OptimizedCallTarget (org.graalvm.compiler.truffle.runtime.OptimizedCallTarget)11 RootNode (com.oracle.truffle.api.nodes.RootNode)9 AddTestNode (org.graalvm.compiler.truffle.test.nodes.AddTestNode)7 BlockTestNode (org.graalvm.compiler.truffle.test.nodes.BlockTestNode)6 VirtualFrame (com.oracle.truffle.api.frame.VirtualFrame)5 LoadLocalTestNode (org.graalvm.compiler.truffle.test.nodes.LoadLocalTestNode)4 NestedExplodedLoopTestNode (org.graalvm.compiler.truffle.test.nodes.NestedExplodedLoopTestNode)3 StoreLocalTestNode (org.graalvm.compiler.truffle.test.nodes.StoreLocalTestNode)3 Assumption (com.oracle.truffle.api.Assumption)2 CallTarget (com.oracle.truffle.api.CallTarget)2 WeakReference (java.lang.ref.WeakReference)2 IntSupplier (java.util.function.IntSupplier)2 LoopTestNode (org.graalvm.compiler.truffle.test.nodes.LoopTestNode)2 TwoMergesExplodedLoopTestNode (org.graalvm.compiler.truffle.test.nodes.TwoMergesExplodedLoopTestNode)2 Ignore (org.junit.Ignore)2