diff graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/SpecializationGroupingTest.java @ 16756:5148aab962af

Truffle-DSL: updated tests for the new generation layout.
author Christian Humer <christian.humer@gmail.com>
date Mon, 11 Aug 2014 15:53:05 +0200
parents 85dcc7f59c34
children a665483c3881
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/SpecializationGroupingTest.java	Mon Aug 11 15:53:05 2014 +0200
+++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/SpecializationGroupingTest.java	Mon Aug 11 15:53:05 2014 +0200
@@ -48,7 +48,7 @@
         MockAssumption a2 = new MockAssumption(false);
         MockAssumption a3 = new MockAssumption(true);
 
-        TestRootNode<TestGrouping> root = TestHelper.createGenericRoot(TestGroupingFactory.getInstance(), a1, a2, a3);
+        TestRootNode<TestGrouping> root = TestHelper.createRoot(TestGroupingFactory.getInstance(), a1, a2, a3);
 
         SimpleTypes.intCast = 0;
         SimpleTypes.intCheck = 0;
@@ -59,29 +59,29 @@
         TestGrouping.true3 = 0;
 
         Assert.assertEquals(42, TestHelper.executeWith(root, 21, 21));
-        Assert.assertEquals(1, TestGrouping.true1);
-        Assert.assertEquals(1, TestGrouping.false1);
-        Assert.assertEquals(1, TestGrouping.true2);
-        Assert.assertEquals(1, TestGrouping.false2);
-        Assert.assertEquals(1, TestGrouping.true3);
-        Assert.assertEquals(2, SimpleTypes.intCheck);
-        Assert.assertEquals(2, SimpleTypes.intCast);
-        Assert.assertEquals(1, a1.checked);
-        Assert.assertEquals(1, a2.checked);
-        Assert.assertEquals(1, a3.checked);
+        Assert.assertEquals(4, TestGrouping.true1);
+        Assert.assertEquals(0, TestGrouping.false1);
+        Assert.assertEquals(4, TestGrouping.true2);
+        Assert.assertEquals(5, TestGrouping.false2);
+        Assert.assertEquals(5, TestGrouping.true3);
+        Assert.assertEquals(8, SimpleTypes.intCheck);
+        Assert.assertEquals(8, SimpleTypes.intCast);
+        Assert.assertEquals(4, a1.checked);
+        Assert.assertEquals(0, a2.checked);
+        Assert.assertEquals(4, a3.checked);
 
         Assert.assertEquals(42, TestHelper.executeWith(root, 21, 21));
-        Assert.assertEquals(2, TestGrouping.true1);
-        Assert.assertEquals(2, TestGrouping.false1);
-        Assert.assertEquals(2, TestGrouping.true2);
-        Assert.assertEquals(2, TestGrouping.false2);
-        Assert.assertEquals(2, TestGrouping.true3);
+        Assert.assertEquals(5, TestGrouping.true1);
+        Assert.assertEquals(0, TestGrouping.false1);
+        Assert.assertEquals(5, TestGrouping.true2);
+        Assert.assertEquals(6, TestGrouping.false2);
+        Assert.assertEquals(6, TestGrouping.true3);
 
-        Assert.assertEquals(2, a1.checked);
-        Assert.assertEquals(2, a2.checked);
-        Assert.assertEquals(2, a3.checked);
-        Assert.assertEquals(4, SimpleTypes.intCheck);
-        Assert.assertEquals(4, SimpleTypes.intCast);
+        Assert.assertEquals(5, a1.checked);
+        Assert.assertEquals(0, a2.checked);
+        Assert.assertEquals(5, a3.checked);
+        Assert.assertEquals(8, SimpleTypes.intCheck);
+        Assert.assertEquals(8, SimpleTypes.intCast);
 
     }
 
@@ -121,39 +121,39 @@
             return true;
         }
 
-        @Specialization(order = 1)
+        @Specialization
         public int fail(int value1, String value2) {
             throw new AssertionError();
         }
 
-        @Specialization(order = 2, guards = {"true1", "false1"})
-        public int fail1(int value1, int value2) {
-            throw new AssertionError();
-        }
-
-        @Specialization(order = 3, guards = {"true1", "true2"}, assumptions = {"a1", "a2"})
-        public int fail2(int value1, int value2) {
-            throw new AssertionError();
-        }
-
-        @Specialization(order = 4, guards = {"true1", "true2"}, assumptions = {"a1", "a3"}, rewriteOn = RuntimeException.class)
+        @Specialization(guards = {"true1", "true2", "!false2", "true3"}, assumptions = {"a1", "a3"}, rewriteOn = RuntimeException.class)
         public int throwRewrite(int value1, int value2) {
             throw new RuntimeException();
         }
 
-        @Specialization(order = 5, guards = {"true1", "true2", "false2"}, assumptions = {"a1", "a3"})
+        @Specialization(guards = {"true1", "true2", "!false2", "true3"}, contains = "throwRewrite", assumptions = {"a1", "a3"})
+        public int success(int value1, int value2) {
+            return value1 + value2;
+        }
+
+        @Specialization(guards = {"true1", "true2", "!false2", "!true3"}, assumptions = {"a1", "a3"})
+        public int fail5(int value1, int value2) {
+            throw new AssertionError();
+        }
+
+        @Specialization(guards = {"true1", "true2", "false2"}, assumptions = {"a1", "a3"})
         public int fail4(int value1, int value2) {
             throw new AssertionError();
         }
 
-        @Specialization(order = 6, guards = {"true1", "true2", "!false2", "!true3"}, assumptions = {"a1", "a3"})
-        public int fail5(int value1, int value2) {
+        @Specialization(guards = {"true1", "true2"}, assumptions = {"a1", "a3"})
+        public int fail2break(int value1, int value2) {
             throw new AssertionError();
         }
 
-        @Specialization(order = 7, guards = {"true1", "true2", "!false2", "true3"}, assumptions = {"a1", "a3"})
-        public int success(int value1, int value2) {
-            return value1 + value2;
+        @Specialization(guards = {"true1", "false1"})
+        public int fail1(int value1, int value2) {
+            throw new AssertionError();
         }
 
     }
@@ -168,18 +168,18 @@
     @NodeChild(value = "genericChild", type = GenericInt.class)
     public abstract static class TestElseConnectionBug1 extends ValueNode {
 
-        @Specialization(order = 1, rewriteOn = {SlowPathException.class}, guards = "isInitialized")
-        public int doInteger(int value) throws SlowPathException {
+        @Specialization(rewriteOn = {SlowPathException.class}, guards = "isInitialized")
+        public int do1(int value) throws SlowPathException {
             throw new SlowPathException();
         }
 
-        @Specialization(order = 3, guards = "isInitialized")
-        public int doObject(int value) {
+        @Specialization(contains = "do1", guards = "isInitialized")
+        public int do2(int value) {
             return value == 42 ? value : 0;
         }
 
-        @Specialization(order = 4, guards = "!isInitialized")
-        public Object doUninitialized(int value) {
+        @Specialization(guards = "!isInitialized")
+        public Object do3(int value) {
             throw new AssertionError();
         }
 
@@ -204,25 +204,25 @@
 
     @Test
     public void testElseConnectionBug2() {
-        TestHelper.assertRuns(TestElseConnectionBug2Factory.getInstance(), 42, 42);
+        TestHelper.assertRuns(TestElseConnectionBug2Factory.getInstance(), new Object[]{42}, new Object[]{42});
     }
 
     @SuppressWarnings("unused")
     @NodeChild
     public abstract static class TestElseConnectionBug2 extends ValueNode {
 
-        @Specialization(order = 2, guards = "guard0")
-        public int doGuard0(int value) {
+        @Specialization(guards = "guard0")
+        public int do1(int value) {
             throw new AssertionError();
         }
 
-        @Specialization(order = 3, guards = "guard1")
-        public int doGuard1(int value) {
+        @Specialization(guards = "guard1")
+        public int do2(int value) {
             throw new AssertionError();
         }
 
-        @Specialization(order = 4, guards = "!guard0")
-        public int doUninitialized(int value) {
+        @Specialization(guards = "!guard0")
+        public int do3(int value) {
             return value;
         }