comparison graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteEvaluatedTest.java @ 11445:5fbd1ba4a5f3

Truffle-DSL: execute evaluated methods can now be declared using any type in the typesystem as parameters.
author Christian Humer <christian.humer@gmail.com>
date Wed, 28 Aug 2013 18:45:32 +0200
parents 79041ab43660
children 2b9fcffd6f36
comparison
equal deleted inserted replaced
11444:89febfdb81d2 11445:5fbd1ba4a5f3
24 24
25 import org.junit.*; 25 import org.junit.*;
26 26
27 import com.oracle.truffle.api.*; 27 import com.oracle.truffle.api.*;
28 import com.oracle.truffle.api.dsl.*; 28 import com.oracle.truffle.api.dsl.*;
29 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.DoubleEvaluatedNodeFactory; 29 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.*;
30 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.EvaluatedNodeFactory; 30 import com.oracle.truffle.api.dsl.test.TypeSystemTest.*;
31 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.UseDoubleEvaluatedNodeFactory;
32 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.UseEvaluatedNodeFactory;
33 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ArgumentNode;
34 import com.oracle.truffle.api.dsl.test.TypeSystemTest.TestArguments;
35 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ValueNode;
36 import com.oracle.truffle.api.frame.*; 31 import com.oracle.truffle.api.frame.*;
37 import com.oracle.truffle.api.nodes.*; 32 import com.oracle.truffle.api.nodes.*;
38 33
39 public class ExecuteEvaluatedTest { 34 public class ExecuteEvaluatedTest {
40 35
102 Assert.assertEquals(exp0 + exp1, exp2); 97 Assert.assertEquals(exp0 + exp1, exp2);
103 return exp2; 98 return exp2;
104 } 99 }
105 } 100 }
106 101
102 @Test
103 public void testEvaluatedGeneration() throws UnexpectedResultException {
104 TestRootNode<TestEvaluatedGeneration> root = TestHelper.createRoot(TestEvaluatedGenerationFactory.getInstance());
105
106 Assert.assertEquals(42, root.getNode().executeEvaluated1(null, 42));
107 Assert.assertEquals(42, root.getNode().executeEvaluated2(null, 42));
108 Assert.assertEquals(42, root.getNode().executeEvaluated3(null, 42));
109 Assert.assertEquals(42, root.getNode().executeEvaluated4(null, 42));
110 }
111
112 @NodeChildren({@NodeChild("exp0")})
113 abstract static class TestEvaluatedGeneration extends ValueNode {
114
115 public abstract Object executeEvaluated1(VirtualFrame frame, Object value);
116
117 public abstract Object executeEvaluated2(VirtualFrame frame, int value);
118
119 public abstract int executeEvaluated3(VirtualFrame frame, Object value) throws UnexpectedResultException;
120
121 public abstract int executeEvaluated4(VirtualFrame frame, int value) throws UnexpectedResultException;
122
123 @Specialization
124 int call(int exp0) {
125 return exp0;
126 }
127 }
128
107 } 129 }