Mercurial > hg > truffle
comparison graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/LazyClassLoadingTest.java @ 18761:a665483c3881
Truffle-DSL: new node layout implementation.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 29 Dec 2014 23:38:54 +0100 |
parents | dd95dff835f9 |
children | 15fe16c45d64 |
comparison
equal
deleted
inserted
replaced
18760:6fa3999631d8 | 18761:a665483c3881 |
---|---|
26 | 26 |
27 import org.junit.*; | 27 import org.junit.*; |
28 | 28 |
29 import com.oracle.truffle.api.dsl.*; | 29 import com.oracle.truffle.api.dsl.*; |
30 import com.oracle.truffle.api.dsl.test.LazyClassLoadingTestFactory.TestNodeFactory; | 30 import com.oracle.truffle.api.dsl.test.LazyClassLoadingTestFactory.TestNodeFactory; |
31 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ValueNode; | 31 import com.oracle.truffle.api.dsl.test.TypeSystemTest.*; |
32 | 32 |
33 public class LazyClassLoadingTest { | 33 public class LazyClassLoadingTest { |
34 @Test | 34 @Test |
35 public void test() { | 35 public void test() { |
36 String testClassName = getClass().getName(); | 36 String factoryName = TestNodeFactory.class.getName(); |
37 String factoryClassName = testClassName + "Factory"; | 37 String nodeName = factoryName + "$" + TestNode.class.getSimpleName() + "Gen"; |
38 String nodeFactoryClassName = factoryClassName + "$TestNodeFactory"; | 38 Assert.assertTrue(isLoaded(factoryName)); |
39 | 39 Assert.assertFalse(isLoaded(nodeName)); |
40 Assert.assertFalse(isLoaded(factoryClassName + "$TestNode")); | |
41 Assert.assertFalse(isLoaded(nodeFactoryClassName)); | |
42 | 40 |
43 NodeFactory<TestNode> factory = TestNodeFactory.getInstance(); | 41 NodeFactory<TestNode> factory = TestNodeFactory.getInstance(); |
42 Assert.assertTrue(isLoaded(factoryName)); | |
43 Assert.assertTrue(isLoaded(nodeName)); | |
44 | 44 |
45 Assert.assertTrue(isLoaded(nodeFactoryClassName)); | 45 Assert.assertFalse(isLoaded(nodeName + "$UninitializedNode")); |
46 Assert.assertFalse(isLoaded(nodeFactoryClassName + "$TestBaseNode")); | 46 Assert.assertFalse(isLoaded(nodeName + "$BaseNode")); |
47 Assert.assertFalse(isLoaded(nodeName + "$IntNode")); | |
48 Assert.assertFalse(isLoaded(nodeName + "$BooleanNode")); | |
49 Assert.assertFalse(isLoaded(nodeName + "$PolymorphicNode")); | |
47 | 50 |
48 TestHelper.createRoot(factory); | 51 TestRootNode<TestNode> root = TestHelper.createRoot(factory); |
49 | 52 |
50 Assert.assertTrue(isLoaded(nodeFactoryClassName + "$TestBaseNode")); | 53 Assert.assertTrue(isLoaded(nodeName + "$BaseNode")); |
51 Assert.assertTrue(isLoaded(nodeFactoryClassName + "$TestUninitializedNode")); | 54 Assert.assertTrue(isLoaded(nodeName + "$UninitializedNode")); |
52 Assert.assertFalse(isLoaded(nodeFactoryClassName + "$TestGenericNode")); | 55 Assert.assertFalse(isLoaded(nodeName + "$IntNode")); |
56 Assert.assertFalse(isLoaded(nodeName + "$BooleanNode")); | |
57 Assert.assertFalse(isLoaded(nodeName + "$PolymorphicNode")); | |
58 | |
59 Assert.assertEquals(42, TestHelper.executeWith(root, 42)); | |
60 | |
61 Assert.assertTrue(isLoaded(nodeName + "$IntNode")); | |
62 Assert.assertFalse(isLoaded(nodeName + "$BooleanNode")); | |
63 Assert.assertFalse(isLoaded(nodeName + "$PolymorphicNode")); | |
64 | |
65 Assert.assertEquals(true, TestHelper.executeWith(root, true)); | |
66 | |
67 Assert.assertTrue(isLoaded(nodeName + "$IntNode")); | |
68 Assert.assertTrue(isLoaded(nodeName + "$BooleanNode")); | |
69 Assert.assertTrue(isLoaded(nodeName + "$PolymorphicNode")); | |
53 } | 70 } |
54 | 71 |
55 private boolean isLoaded(String className) { | 72 private boolean isLoaded(String className) { |
56 ClassLoader classLoader = getClass().getClassLoader(); | 73 ClassLoader classLoader = getClass().getClassLoader(); |
57 Method m; | 74 Method m; |
62 } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { | 79 } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { |
63 throw new RuntimeException(e); | 80 throw new RuntimeException(e); |
64 } | 81 } |
65 } | 82 } |
66 | 83 |
67 @SuppressWarnings("unused") | 84 @NodeChild("a") |
68 @NodeChildren({@NodeChild("left"), @NodeChild("right")}) | |
69 abstract static class TestNode extends ValueNode { | 85 abstract static class TestNode extends ValueNode { |
70 @Specialization(order = 1) | 86 |
71 int add(int left, int right) { | 87 @Specialization |
72 return 42; | 88 int s(int a) { |
89 return a; | |
73 } | 90 } |
74 | 91 |
75 @Specialization(order = 2) | 92 @Specialization |
76 int add(boolean left, boolean right) { | 93 boolean s(boolean a) { |
77 return 21; | 94 return a; |
78 } | 95 } |
79 | 96 |
80 @Specialization(order = 4) | |
81 String add(boolean left, int right) { | |
82 return "(boolean,int)"; | |
83 } | |
84 } | 97 } |
85 } | 98 } |