changeset 20171:9ca538e3e46e

DSL: add tests for comparing against a byte and a short in guards.
author Chris Seaton <chris.seaton@oracle.com>
date Mon, 06 Apr 2015 13:43:39 +0100
parents 953c813b8e7a
children 3648df587223
files graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/MethodGuardsTest.java graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemTest.java
diffstat 2 files changed, 48 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/MethodGuardsTest.java	Sun Apr 05 20:40:52 2015 +0100
+++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/MethodGuardsTest.java	Mon Apr 06 13:43:39 2015 +0100
@@ -34,8 +34,10 @@
 import com.oracle.truffle.api.dsl.test.LimitTestFactory.MethodLimitTestFactory;
 import com.oracle.truffle.api.dsl.test.MethodGuardsTestFactory.GuardCompareWithFieldTestFactory;
 import com.oracle.truffle.api.dsl.test.MethodGuardsTestFactory.GuardComplexTestFactory;
+import com.oracle.truffle.api.dsl.test.MethodGuardsTestFactory.GuardEqualByteIntTestFactory;
 import com.oracle.truffle.api.dsl.test.MethodGuardsTestFactory.GuardEqualIntLongTestFactory;
 import com.oracle.truffle.api.dsl.test.MethodGuardsTestFactory.GuardEqualLongIntTestFactory;
+import com.oracle.truffle.api.dsl.test.MethodGuardsTestFactory.GuardEqualShortIntTestFactory;
 import com.oracle.truffle.api.dsl.test.MethodGuardsTestFactory.GuardEqualTestFactory;
 import com.oracle.truffle.api.dsl.test.MethodGuardsTestFactory.GuardFieldTestFactory;
 import com.oracle.truffle.api.dsl.test.MethodGuardsTestFactory.GuardGreaterEqualTestFactory;
@@ -85,7 +87,7 @@
 
     @NodeChild
     static class GuardEqualIntLongTest extends ValueNode {
-        @Specialization(guards = "value == 1")
+        @Specialization(guards = "1 == value")
         static String do1(long value) {
             return "do1";
         }
@@ -97,6 +99,48 @@
     }
 
     @Test
+    public void testGuardEqualByteInt() {
+        CallTarget root = createCallTarget(GuardEqualByteIntTestFactory.getInstance());
+        assertEquals("do1", root.call((byte) 1));
+        assertEquals("do2", root.call((byte) 2));
+        assertEquals("do1", root.call((byte) 1));
+    }
+
+    @NodeChild
+    static class GuardEqualByteIntTest extends ValueNode {
+        @Specialization(guards = "value == 1")
+        static String do1(byte value) {
+            return "do1";
+        }
+
+        @Specialization
+        static String do2(byte value) {
+            return "do2";
+        }
+    }
+
+    @Test
+    public void testGuardEqualShortInt() {
+        CallTarget root = createCallTarget(GuardEqualShortIntTestFactory.getInstance());
+        assertEquals("do1", root.call((short) 1));
+        assertEquals("do2", root.call((short) 2));
+        assertEquals("do1", root.call((short) 1));
+    }
+
+    @NodeChild
+    static class GuardEqualShortIntTest extends ValueNode {
+        @Specialization(guards = "value == 1")
+        static String do1(short value) {
+            return "do1";
+        }
+
+        @Specialization
+        static String do2(short value) {
+            return "do2";
+        }
+    }
+
+    @Test
     public void testGuardEqualLongInt() {
         CallTarget root = createCallTarget(GuardEqualLongIntTestFactory.getInstance());
         assertEquals("do1", root.call(1));
@@ -106,7 +150,7 @@
 
     @NodeChild
     static class GuardEqualLongIntTest extends ValueNode {
-        @Specialization(guards = "1 == value")
+        @Specialization(guards = "value == 1")
         static String do1(long value) {
             return "do1";
         }
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemTest.java	Sun Apr 05 20:40:52 2015 +0100
+++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemTest.java	Mon Apr 06 13:43:39 2015 +0100
@@ -33,8 +33,8 @@
 
 public class TypeSystemTest {
 
-    @TypeSystem({int.class, long.class, double.class, boolean.class, BigInteger.class, String.class, CallTarget.class, BExtendsAbstract.class, CExtendsAbstract.class, Abstract.class, Interface.class,
-                    Object[].class})
+    @TypeSystem({byte.class, short.class, int.class, long.class, double.class, boolean.class, BigInteger.class, String.class, CallTarget.class, BExtendsAbstract.class, CExtendsAbstract.class,
+                    Abstract.class, Interface.class, Object[].class})
     @DSLOptions(useNewLayout = true)
     static class SimpleTypes {