changeset 9223:5f7f0d3e3638

Updated codegen tests to new codegen API.
author Christian Humer <christian.humer@gmail.com>
date Sat, 20 Apr 2013 12:17:47 +0200
parents aa9ffb3a715e
children b69312e4eceb
files graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/BinaryNodeTest.java graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/BuiltinTest.java graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/ExecuteEvaluatedTest.java graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/GuardsTest.java graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/TestHelper.java graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/TypeSystemTest.java
diffstat 6 files changed, 113 insertions(+), 70 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/BinaryNodeTest.java	Sat Apr 20 12:17:27 2013 +0200
+++ b/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/BinaryNodeTest.java	Sat Apr 20 12:17:47 2013 +0200
@@ -22,6 +22,9 @@
  */
 package com.oracle.truffle.api.codegen.test;
 
+import static com.oracle.truffle.api.codegen.test.TestHelper.*;
+import static junit.framework.Assert.*;
+
 import org.junit.*;
 
 import com.oracle.truffle.api.codegen.*;
@@ -29,9 +32,6 @@
 import com.oracle.truffle.api.codegen.test.TypeSystemTest.TestRootNode;
 import com.oracle.truffle.api.codegen.test.TypeSystemTest.ValueNode;
 
-import static junit.framework.Assert.*;
-import static com.oracle.truffle.api.codegen.test.TestHelper.*;
-
 public class BinaryNodeTest {
 
     @Test
@@ -49,31 +49,13 @@
         executeWith(node, new Object(), new Object());
     }
 
+    @NodeChildren({@NodeChild("leftNode"), @NodeChild("rightNode")})
     abstract static class BinaryNode extends ValueNode {
 
-        @Child protected ValueNode leftNode;
-        @Child protected ValueNode rightNode;
-
-        public BinaryNode(ValueNode left, ValueNode right) {
-            this.leftNode = adoptChild(left);
-            this.rightNode = adoptChild(right);
-        }
-
-        public BinaryNode(BinaryNode prev) {
-            this(prev.leftNode, prev.rightNode);
-        }
     }
 
     abstract static class AddNode extends BinaryNode {
 
-        public AddNode(ValueNode left, ValueNode right) {
-            super(left, right);
-        }
-
-        public AddNode(AddNode prev) {
-            super(prev);
-        }
-
         @Specialization
         int add(int left, int right) {
             return left + right;
--- a/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/BuiltinTest.java	Sat Apr 20 12:17:27 2013 +0200
+++ b/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/BuiltinTest.java	Sat Apr 20 12:17:47 2013 +0200
@@ -32,7 +32,6 @@
 import com.oracle.truffle.api.codegen.test.BuiltinTestFactory.StrFactory.StrConcatFactory;
 import com.oracle.truffle.api.codegen.test.BuiltinTestFactory.StrFactory.StrLengthFactory;
 import com.oracle.truffle.api.codegen.test.BuiltinTestFactory.StrFactory.StrSubstrFactory;
-import com.oracle.truffle.api.codegen.test.TypeSystemTest.ChildrenNode;
 import com.oracle.truffle.api.codegen.test.TypeSystemTest.TestRootNode;
 import com.oracle.truffle.api.codegen.test.TypeSystemTest.ValueNode;
 
@@ -97,7 +96,7 @@
         assertSame(context, executeWith(node));
     }
 
-    @NodeClass(BuiltinNode.class)
+    @NodeClass(value = BuiltinNode.class, splitByMethodName = true)
     static class Str {
 
         private final String internal;
@@ -162,23 +161,22 @@
         }
     }
 
-    abstract static class BuiltinNode extends ChildrenNode {
+    @NodeChild(value = "children", type = ValueNode[].class)
+    abstract static class BuiltinNode extends ValueNode {
 
         protected final Context context;
 
         public BuiltinNode(BuiltinNode node) {
-            this(node.context, node.children);
+            this(node.context);
         }
 
-        public BuiltinNode(Context context, ValueNode... children) {
-            super(children);
+        public BuiltinNode(Context context) {
             this.context = context;
         }
 
         public Context getContext() {
             return context;
         }
-
     }
 
     static class Context {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/ExecuteEvaluatedTest.java	Sat Apr 20 12:17:47 2013 +0200
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2012, 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.truffle.api.codegen.test;
+
+import com.oracle.truffle.api.*;
+import com.oracle.truffle.api.codegen.*;
+import com.oracle.truffle.api.codegen.test.TypeSystemTest.ValueNode;
+import com.oracle.truffle.api.frame.*;
+import com.oracle.truffle.api.nodes.*;
+
+public class ExecuteEvaluatedTest {
+
+    public abstract static class ExtValueNode extends ValueNode {
+
+        public CallTarget executeCallTarget(VirtualFrame frame) throws UnexpectedResultException {
+            return SimpleTypesGen.SIMPLETYPES.expectCallTarget(execute(frame));
+        }
+
+    }
+
+    /* Represents target[element] */
+    @NodeChildren({@NodeChild("targetNode"), @NodeChild("elementNode")})
+    abstract static class ReadElementNode extends ExtValueNode {
+
+        @Specialization
+        int getInt(Object[] target, int element) {
+            return (int) target[element];
+        }
+
+        public abstract Object executeWith(VirtualFrame frame, Object targetValue);
+    }
+
+    /* Represents target[element]() */
+    @NodeChildren({@NodeChild("targetNode"), @NodeChild(value = "elementNode", type = ReadElementNode.class, executeWith = "targetNode")})
+    abstract static class ElementCallNode extends ExtValueNode {
+
+        @Specialization
+        Object call(Object receiver, CallTarget callTarget) {
+            return callTarget.call(new TestArguments(receiver));
+        }
+
+    }
+
+    public static class TestArguments extends Arguments {
+
+        private final Object receiver;
+
+        public TestArguments(Object receiver) {
+            this.receiver = receiver;
+        }
+
+        public Object getReceiver() {
+            return receiver;
+        }
+
+    }
+
+}
--- a/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/GuardsTest.java	Sat Apr 20 12:17:27 2013 +0200
+++ b/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/GuardsTest.java	Sat Apr 20 12:17:47 2013 +0200
@@ -30,7 +30,6 @@
 import com.oracle.truffle.api.codegen.*;
 import com.oracle.truffle.api.codegen.test.GuardsTestFactory.GlobalFlagGuardFactory;
 import com.oracle.truffle.api.codegen.test.GuardsTestFactory.InvocationGuardFactory;
-import com.oracle.truffle.api.codegen.test.TypeSystemTest.ChildrenNode;
 import com.oracle.truffle.api.codegen.test.TypeSystemTest.TestRootNode;
 import com.oracle.truffle.api.codegen.test.TypeSystemTest.ValueNode;
 
@@ -52,19 +51,12 @@
         assertEquals(1, InvocationGuard.genericInvocations);
     }
 
-    public abstract static class InvocationGuard extends ChildrenNode {
+    @NodeChildren({@NodeChild("value0"), @NodeChild("value1")})
+    public abstract static class InvocationGuard extends ValueNode {
 
         static int specializedInvocations = 0;
         static int genericInvocations = 0;
 
-        public InvocationGuard(ValueNode... children) {
-            super(children);
-        }
-
-        public InvocationGuard(InvocationGuard node) {
-            super(node);
-        }
-
         boolean guard(int value0, int value1) {
             return value0 != Integer.MAX_VALUE;
         }
@@ -95,18 +87,11 @@
         assertEquals(42, executeWith(root, NULL));
     }
 
-    public abstract static class GlobalFlagGuard extends ChildrenNode {
+    @NodeChild("expression")
+    public abstract static class GlobalFlagGuard extends ValueNode {
 
         static boolean globalFlag = false;
 
-        public GlobalFlagGuard(ValueNode... children) {
-            super(children);
-        }
-
-        public GlobalFlagGuard(GlobalFlagGuard node) {
-            super(node);
-        }
-
         static boolean globalFlagGuard() {
             return globalFlag;
         }
--- a/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/TestHelper.java	Sat Apr 20 12:17:27 2013 +0200
+++ b/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/TestHelper.java	Sat Apr 20 12:17:47 2013 +0200
@@ -26,6 +26,7 @@
 
 import com.oracle.truffle.api.*;
 import com.oracle.truffle.api.codegen.*;
+import com.oracle.truffle.api.codegen.test.BuiltinTest.*;
 import com.oracle.truffle.api.codegen.test.TypeSystemTest.*;
 
 /**
@@ -46,7 +47,7 @@
 
         List<Object> argumentList = new ArrayList<>();
         argumentList.addAll(Arrays.asList(constants));
-        if (ChildrenNode.class.isAssignableFrom(factory.getNodeClass())) {
+        if (ChildrenNode.class.isAssignableFrom(factory.getNodeClass()) || BuiltinNode.class.isAssignableFrom(factory.getNodeClass())) {
             argumentList.add(argumentNodes);
         } else {
             argumentList.addAll(Arrays.asList(argumentNodes));
--- a/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/TypeSystemTest.java	Sat Apr 20 12:17:27 2013 +0200
+++ b/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/TypeSystemTest.java	Sat Apr 20 12:17:47 2013 +0200
@@ -30,41 +30,40 @@
 
 public class TypeSystemTest {
 
-    @TypeSystem({int.class, Str.class})
+    @TypeSystem({int.class, Str.class, CallTarget.class, Object[].class})
     static class SimpleTypes {
     }
 
     @TypeSystemReference(SimpleTypes.class)
-    abstract static class ValueNode extends Node {
+    public abstract static class ValueNode extends Node {
 
-        int executeInt(VirtualFrame frame) throws UnexpectedResultException {
+        public int executeInt(VirtualFrame frame) throws UnexpectedResultException {
             return SimpleTypesGen.SIMPLETYPES.expectInteger(execute(frame));
         }
 
-        Str executeStr(VirtualFrame frame) throws UnexpectedResultException {
+        public Str executeStr(VirtualFrame frame) throws UnexpectedResultException {
             return SimpleTypesGen.SIMPLETYPES.expectStr(execute(frame));
         }
 
-        abstract Object execute(VirtualFrame frame);
+        public Object[] executeIntArray(VirtualFrame frame) throws UnexpectedResultException {
+            return SimpleTypesGen.SIMPLETYPES.expectObjectArray(execute(frame));
+        }
+
+        public abstract Object execute(VirtualFrame frame);
+
+        @Override
+        public ValueNode copy() {
+            return (ValueNode) super.copy();
+        }
     }
 
-    @TypeSystemReference(SimpleTypes.class)
-    abstract static class ChildrenNode extends ValueNode {
-
-        @Children protected ValueNode[] children;
-
-        public ChildrenNode(ValueNode... children) {
-            this.children = adoptChildren(children);
-        }
-
-        public ChildrenNode(ChildrenNode node) {
-            this(node.children);
-        }
+    @NodeChild(value = "children", type = ValueNode[].class)
+    public abstract static class ChildrenNode extends ValueNode {
 
     }
 
     @TypeSystemReference(SimpleTypes.class)
-    static class TestRootNode<E extends ValueNode> extends RootNode {
+    public static class TestRootNode<E extends ValueNode> extends RootNode {
 
         @Child private E node;
 
@@ -82,7 +81,7 @@
         }
     }
 
-    static class TestArguments extends Arguments {
+    public static class TestArguments extends Arguments {
 
         private final Object[] values;
 
@@ -100,7 +99,7 @@
 
     }
 
-    static class ArgumentNode extends ValueNode {
+    public static class ArgumentNode extends ValueNode {
 
         final int index;
 
@@ -109,7 +108,7 @@
         }
 
         @Override
-        Object execute(VirtualFrame frame) {
+        public Object execute(VirtualFrame frame) {
             return ((TestArguments) frame.getArguments()).get(index);
         }