Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ExecuteEvaluatedTest.java @ 13271:2b9fcffd6f36
Truffle-DSL: added support for generating execute methods with java varargs.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Sun, 01 Dec 2013 18:18:33 +0100 |
parents | 5fbd1ba4a5f3 |
children | 0b8335a4fb13 |
comparison
equal
deleted
inserted
replaced
13203:401e1473c546 | 13271:2b9fcffd6f36 |
---|---|
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.*; | 29 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.DoubleEvaluatedNodeFactory; |
30 import com.oracle.truffle.api.dsl.test.TypeSystemTest.*; | 30 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.EvaluatedNodeFactory; |
31 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.TestEvaluatedGenerationFactory; | |
32 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.TestEvaluatedVarArgs0Factory; | |
33 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.TestEvaluatedVarArgs1Factory; | |
34 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.TestEvaluatedVarArgs2Factory; | |
35 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.UseDoubleEvaluatedNodeFactory; | |
36 import com.oracle.truffle.api.dsl.test.ExecuteEvaluatedTestFactory.UseEvaluatedNodeFactory; | |
37 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ArgumentNode; | |
38 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ChildrenNode; | |
39 import com.oracle.truffle.api.dsl.test.TypeSystemTest.TestArguments; | |
40 import com.oracle.truffle.api.dsl.test.TypeSystemTest.TestRootNode; | |
41 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ValueNode; | |
31 import com.oracle.truffle.api.frame.*; | 42 import com.oracle.truffle.api.frame.*; |
32 import com.oracle.truffle.api.nodes.*; | 43 import com.oracle.truffle.api.nodes.*; |
33 | 44 |
34 public class ExecuteEvaluatedTest { | 45 public class ExecuteEvaluatedTest { |
35 | 46 |
124 int call(int exp0) { | 135 int call(int exp0) { |
125 return exp0; | 136 return exp0; |
126 } | 137 } |
127 } | 138 } |
128 | 139 |
140 @Test | |
141 public void test0VarArgs1() { | |
142 TestRootNode<TestEvaluatedVarArgs0> root = TestHelper.createRoot(TestEvaluatedVarArgs0Factory.getInstance()); | |
143 Assert.assertEquals(42, root.getNode().execute1(null)); | |
144 } | |
145 | |
146 abstract static class TestEvaluatedVarArgs0 extends ChildrenNode { | |
147 | |
148 public abstract Object execute1(VirtualFrame frame, Object... value); | |
149 | |
150 @Specialization | |
151 int call() { | |
152 return 42; | |
153 } | |
154 } | |
155 | |
156 @Test | |
157 public void test1VarArgs1() { | |
158 TestRootNode<TestEvaluatedVarArgs1> root = TestHelper.createRoot(TestEvaluatedVarArgs1Factory.getInstance()); | |
159 Assert.assertEquals(42, root.getNode().execute1(null, 42)); | |
160 } | |
161 | |
162 @Test(expected = AssertionError.class) | |
163 public void test1VarArgs2() { | |
164 TestRootNode<TestEvaluatedVarArgs2> root = TestHelper.createRoot(TestEvaluatedVarArgs2Factory.getInstance()); | |
165 Assert.assertEquals(-1, root.getNode().execute1(null)); | |
166 } | |
167 | |
168 abstract static class TestEvaluatedVarArgs1 extends ChildrenNode { | |
169 | |
170 public abstract Object execute1(VirtualFrame frame, Object... value); | |
171 | |
172 @Specialization | |
173 int call(int exp0) { | |
174 return exp0; | |
175 } | |
176 } | |
177 | |
178 @Test | |
179 public void test2VarArgs1() { | |
180 TestRootNode<TestEvaluatedVarArgs2> root = TestHelper.createRoot(TestEvaluatedVarArgs2Factory.getInstance()); | |
181 Assert.assertEquals(42, root.getNode().execute1(null, 21, 21)); | |
182 } | |
183 | |
184 @Test(expected = AssertionError.class) | |
185 public void test2VarArgs2() { | |
186 TestRootNode<TestEvaluatedVarArgs2> root = TestHelper.createRoot(TestEvaluatedVarArgs2Factory.getInstance()); | |
187 Assert.assertEquals(-1, root.getNode().execute1(null, 42)); | |
188 } | |
189 | |
190 @Test(expected = AssertionError.class) | |
191 public void test2VarArgs3() { | |
192 TestRootNode<TestEvaluatedVarArgs2> root = TestHelper.createRoot(TestEvaluatedVarArgs2Factory.getInstance()); | |
193 Assert.assertEquals(-1, root.getNode().execute1(null)); | |
194 } | |
195 | |
196 abstract static class TestEvaluatedVarArgs2 extends ChildrenNode { | |
197 | |
198 public abstract Object execute1(VirtualFrame frame, Object... value); | |
199 | |
200 @Specialization | |
201 int call(int exp0, int exp1) { | |
202 return exp0 + exp1; | |
203 } | |
204 } | |
205 | |
129 } | 206 } |