Mercurial > hg > graal-compiler
changeset 11470:b010fd3de42d
Truffle-DSL: added a test that covers wrong a wrong else connection bug.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Fri, 30 Aug 2013 13:11:48 +0200 |
parents | 88316d1c4644 |
children | 5d72a3f5a31d |
files | graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/SpecializationGroupingTest.java |
diffstat | 1 files changed, 46 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/SpecializationGroupingTest.java Fri Aug 30 11:37:42 2013 +0200 +++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/SpecializationGroupingTest.java Fri Aug 30 13:11:48 2013 +0200 @@ -26,10 +26,12 @@ import com.oracle.truffle.api.*; import com.oracle.truffle.api.dsl.*; +import com.oracle.truffle.api.dsl.test.SpecializationGroupingTestFactory.TestElseConnectionBug1Factory; import com.oracle.truffle.api.dsl.test.SpecializationGroupingTestFactory.TestGroupingFactory; import com.oracle.truffle.api.dsl.test.TypeSystemTest.SimpleTypes; import com.oracle.truffle.api.dsl.test.TypeSystemTest.TestRootNode; import com.oracle.truffle.api.dsl.test.TypeSystemTest.ValueNode; +import com.oracle.truffle.api.frame.*; import com.oracle.truffle.api.nodes.*; /** @@ -154,6 +156,50 @@ } + @Test + public void testElseConnectionBug1() { + CallTarget target = TestHelper.createCallTarget(TestElseConnectionBug1Factory.create(new GenericInt())); + Assert.assertEquals(42, target.call()); + } + + @SuppressWarnings("unused") + @NodeChild(value = "genericChild", type = GenericInt.class) + public abstract static class TestElseConnectionBug1 extends ValueNode { + + @Specialization(order = 1, rewriteOn = {SlowPathException.class}, guards = "isInitialized") + public int doInteger(int value) throws SlowPathException { + throw new SlowPathException(); + } + + @Specialization(order = 3, guards = "isInitialized") + public int doObject(int value) { + return value == 42 ? value : 0; + } + + @Specialization(order = 4, guards = "!isInitialized") + public Object doUninitialized(int value) { + throw new AssertionError(); + } + + boolean isInitialized(int value) { + return true; + } + } + + public static final class GenericInt extends ValueNode { + + @Override + public Object execute(VirtualFrame frame) { + return executeInt(frame); + } + + @Override + public int executeInt(VirtualFrame frame) { + return 42; + } + + } + private static class MockAssumption implements Assumption { int checked;