Mercurial > hg > truffle
annotate truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/ImplicitCastTest.java @ 22157:dc83cc1f94f2
Using fully qualified imports
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Wed, 16 Sep 2015 11:33:22 +0200 |
parents | 9c8c0937da41 |
children | 526de3af756d |
rev | line source |
---|---|
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
1 /* |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
2 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
4 * |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
8 * |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
13 * accompanied this code). |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
14 * |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
18 * |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
21 * questions. |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
22 */ |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
23 package com.oracle.truffle.api.dsl.test; |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
24 |
22157
dc83cc1f94f2
Using fully qualified imports
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
21951
diff
changeset
|
25 import com.oracle.truffle.api.dsl.ImplicitCast; |
dc83cc1f94f2
Using fully qualified imports
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
21951
diff
changeset
|
26 import com.oracle.truffle.api.dsl.NodeChild; |
dc83cc1f94f2
Using fully qualified imports
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
21951
diff
changeset
|
27 import com.oracle.truffle.api.dsl.NodeChildren; |
dc83cc1f94f2
Using fully qualified imports
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
21951
diff
changeset
|
28 import com.oracle.truffle.api.dsl.Specialization; |
dc83cc1f94f2
Using fully qualified imports
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
21951
diff
changeset
|
29 import com.oracle.truffle.api.dsl.TypeSystem; |
dc83cc1f94f2
Using fully qualified imports
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
21951
diff
changeset
|
30 import com.oracle.truffle.api.dsl.TypeSystemReference; |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
31 import com.oracle.truffle.api.dsl.test.ImplicitCastTestFactory.ImplicitCast0NodeFactory; |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
32 import com.oracle.truffle.api.dsl.test.ImplicitCastTestFactory.ImplicitCast1NodeFactory; |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
33 import com.oracle.truffle.api.dsl.test.ImplicitCastTestFactory.ImplicitCast2NodeFactory; |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
34 import com.oracle.truffle.api.dsl.test.TypeSystemTest.TestRootNode; |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
35 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ValueNode; |
22157
dc83cc1f94f2
Using fully qualified imports
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
21951
diff
changeset
|
36 import com.oracle.truffle.api.frame.VirtualFrame; |
dc83cc1f94f2
Using fully qualified imports
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
21951
diff
changeset
|
37 import org.junit.Assert; |
dc83cc1f94f2
Using fully qualified imports
Jaroslav Tulach <jaroslav.tulach@oracle.com>
parents:
21951
diff
changeset
|
38 import org.junit.Test; |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
39 |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
40 public class ImplicitCastTest { |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
41 |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
42 @TypeSystem({int.class, String.class, boolean.class}) |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
43 static class ImplicitCast0Types { |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
44 |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
45 @ImplicitCast |
18758
3912400fc33a
Truffle-DSL: remove type system singleton
Christian Humer <christian.humer@gmail.com>
parents:
16756
diff
changeset
|
46 static boolean castInt(int intvalue) { |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
47 return intvalue == 1 ? true : false; |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
48 } |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
49 |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
50 @ImplicitCast |
18758
3912400fc33a
Truffle-DSL: remove type system singleton
Christian Humer <christian.humer@gmail.com>
parents:
16756
diff
changeset
|
51 static boolean castString(String strvalue) { |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
52 return strvalue.equals("1"); |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
53 } |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
54 |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
55 } |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
56 |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
57 @TypeSystemReference(ImplicitCast0Types.class) |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
58 @NodeChild(value = "operand", type = ImplicitCast0Node.class) |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
59 abstract static class ImplicitCast0Node extends ValueNode { |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
60 |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
61 public abstract Object executeEvaluated(VirtualFrame frame, Object value2); |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
62 |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
63 @Specialization |
12391
7aa2a8c69ba3
TruffleDSL: improved code generation layout for implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
11545
diff
changeset
|
64 public String op1(String value) { |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
65 return value; |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
66 } |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
67 |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
68 @Specialization |
12391
7aa2a8c69ba3
TruffleDSL: improved code generation layout for implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
11545
diff
changeset
|
69 public boolean op1(boolean value) { |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
70 return value; |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
71 } |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
72 |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
73 } |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
74 |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
75 @Test |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
76 public void testImplicitCast0() { |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
77 ImplicitCast0Node node = ImplicitCast0NodeFactory.create(null); |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
78 TestRootNode<ImplicitCast0Node> root = new TestRootNode<>(node); |
14632
5f5e2711dc24
fix TruffleDSL tests
Andreas Woess <andreas.woess@jku.at>
parents:
13528
diff
changeset
|
79 root.adoptChildren(); |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
80 Assert.assertEquals("2", root.getNode().executeEvaluated(null, "2")); |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
81 Assert.assertEquals(true, root.getNode().executeEvaluated(null, 1)); |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
82 Assert.assertEquals("1", root.getNode().executeEvaluated(null, "1")); |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
83 Assert.assertEquals(true, root.getNode().executeEvaluated(null, 1)); |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
84 Assert.assertEquals(true, root.getNode().executeEvaluated(null, true)); |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
85 } |
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
86 |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
87 @TypeSystemReference(ImplicitCast0Types.class) |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
88 @NodeChild(value = "operand", type = ImplicitCast1Node.class) |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
89 abstract static class ImplicitCast1Node extends ValueNode { |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
90 |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
91 public abstract Object executeEvaluated(VirtualFrame frame, Object operand); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
92 |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
93 @Specialization |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
94 public String op0(String value) { |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
95 return value; |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
96 } |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
97 |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
98 @Specialization(rewriteOn = RuntimeException.class) |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
99 public boolean op1(@SuppressWarnings("unused") boolean value) throws RuntimeException { |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
100 throw new RuntimeException(); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
101 } |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
102 |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
103 @Specialization(contains = "op1") |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
104 public boolean op2(boolean value) { |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
105 return value; |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
106 } |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
107 |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
108 } |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
109 |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
110 @Test |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
111 public void testImplicitCast1() { |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
112 ImplicitCast1Node node = ImplicitCast1NodeFactory.create(null); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
113 TestRootNode<ImplicitCast1Node> root = new TestRootNode<>(node); |
14632
5f5e2711dc24
fix TruffleDSL tests
Andreas Woess <andreas.woess@jku.at>
parents:
13528
diff
changeset
|
114 root.adoptChildren(); |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
115 Assert.assertEquals("2", root.getNode().executeEvaluated(null, "2")); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
116 Assert.assertEquals(true, root.getNode().executeEvaluated(null, 1)); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
117 Assert.assertEquals("1", root.getNode().executeEvaluated(null, "1")); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
118 Assert.assertEquals(true, root.getNode().executeEvaluated(null, 1)); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
119 Assert.assertEquals(true, root.getNode().executeEvaluated(null, true)); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
120 } |
12391
7aa2a8c69ba3
TruffleDSL: improved code generation layout for implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
11545
diff
changeset
|
121 |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
122 @TypeSystemReference(ImplicitCast0Types.class) |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
123 @NodeChildren({@NodeChild(value = "operand0", type = ImplicitCast2Node.class), @NodeChild(value = "operand1", type = ImplicitCast2Node.class, executeWith = "operand0")}) |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
124 // TODO temporary workaround |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
125 abstract static class ImplicitCast2Node extends ValueNode { |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
126 |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
127 @Specialization |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
128 public String op0(String v0, String v1) { |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
129 return v0 + v1; |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
130 } |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
131 |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
132 @SuppressWarnings("unused") |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
133 @Specialization(rewriteOn = RuntimeException.class) |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
134 public boolean op1(boolean v0, boolean v1) throws RuntimeException { |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
135 throw new RuntimeException(); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
136 } |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
137 |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
138 @Specialization(contains = "op1") |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
139 public boolean op2(boolean v0, boolean v1) { |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
140 return v0 && v1; |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
141 } |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
142 |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
143 public abstract Object executeEvaluated(VirtualFrame frame, Object v1); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
144 |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
145 public abstract Object executeEvaluated(VirtualFrame frame, Object v1, Object v2); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
146 |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
147 public abstract Object executeEvaluated(VirtualFrame frame, boolean v1, boolean v2); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
148 |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
149 } |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
150 |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
151 @Test |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
152 public void testImplicitCast2() { |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
153 ImplicitCast2Node node = ImplicitCast2NodeFactory.create(null, null); |
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
154 TestRootNode<ImplicitCast2Node> root = new TestRootNode<>(node); |
14632
5f5e2711dc24
fix TruffleDSL tests
Andreas Woess <andreas.woess@jku.at>
parents:
13528
diff
changeset
|
155 root.adoptChildren(); |
12393
7cce548b0b60
Truffle-DSL: fixed minor issue in implicit cast tests.
Christian Humer <christian.humer@gmail.com>
parents:
12392
diff
changeset
|
156 Assert.assertEquals("42", root.getNode().executeEvaluated(null, "4", "2")); |
7cce548b0b60
Truffle-DSL: fixed minor issue in implicit cast tests.
Christian Humer <christian.humer@gmail.com>
parents:
12392
diff
changeset
|
157 Assert.assertEquals(true, root.getNode().executeEvaluated(null, 1, 1)); |
7cce548b0b60
Truffle-DSL: fixed minor issue in implicit cast tests.
Christian Humer <christian.humer@gmail.com>
parents:
12392
diff
changeset
|
158 Assert.assertEquals("42", root.getNode().executeEvaluated(null, "4", "2")); |
7cce548b0b60
Truffle-DSL: fixed minor issue in implicit cast tests.
Christian Humer <christian.humer@gmail.com>
parents:
12392
diff
changeset
|
159 Assert.assertEquals(true, root.getNode().executeEvaluated(null, 1, 1)); |
7cce548b0b60
Truffle-DSL: fixed minor issue in implicit cast tests.
Christian Humer <christian.humer@gmail.com>
parents:
12392
diff
changeset
|
160 Assert.assertEquals(true, root.getNode().executeEvaluated(null, true, true)); |
12392
4e26955b6da2
Truffle-DSL: new implicit cast code generation layout supports now executeWith.
Christian Humer <christian.humer@gmail.com>
parents:
12391
diff
changeset
|
161 } |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
162 |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
163 @TypeSystem({String.class, boolean.class}) |
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
164 static class ImplicitCastError1 { |
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
165 |
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
166 @ImplicitCast |
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
167 @ExpectError("Target type and source type of an @ImplicitCast must not be the same type.") |
18758
3912400fc33a
Truffle-DSL: remove type system singleton
Christian Humer <christian.humer@gmail.com>
parents:
16756
diff
changeset
|
168 static String castInvalid(@SuppressWarnings("unused") String value) { |
16756
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
169 throw new AssertionError(); |
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
170 } |
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
171 |
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
172 } |
5148aab962af
Truffle-DSL: updated tests for the new generation layout.
Christian Humer <christian.humer@gmail.com>
parents:
14632
diff
changeset
|
173 |
18785
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
174 @TypeSystem({String.class, boolean.class}) |
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
175 static class ImplicitCastError2 { |
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
176 |
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
177 @ImplicitCast |
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
178 @ExpectError("Target type and source type of an @ImplicitCast must not be the same type.") |
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
179 static String castInvalid(@SuppressWarnings("unused") String value) { |
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
180 throw new AssertionError(); |
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
181 } |
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
182 |
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
183 } |
93016f2f3f16
Truffle-DSL: optimize generated code for nodes with a single specialization. (GRAAL-602 #resolve)
Christian Humer <christian.humer@gmail.com>
parents:
18758
diff
changeset
|
184 |
11545
2fb276f5e3e9
Truffle-DSL: implemented implicit casts.
Christian Humer <christian.humer@gmail.com>
parents:
diff
changeset
|
185 } |