# HG changeset patch # User Chris Seaton # Date 1428324219 -3600 # Node ID 9ca538e3e46e17ede021000cf8e54bd6165aea64 # Parent 953c813b8e7aa191622236b43f119deeb01a3d43 DSL: add tests for comparing against a byte and a short in guards. diff -r 953c813b8e7a -r 9ca538e3e46e graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/MethodGuardsTest.java --- 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"; } diff -r 953c813b8e7a -r 9ca538e3e46e graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemTest.java --- 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 {