Mercurial > hg > graal-compiler
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 {