# HG changeset patch # User Christian Humer # Date 1366453067 -7200 # Node ID 5f7f0d3e3638fad417b4c19455152c4a48302d11 # Parent aa9ffb3a715eeb4f42cdf2ab2f639cb8e423e905 Updated codegen tests to new codegen API. diff -r aa9ffb3a715e -r 5f7f0d3e3638 graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/BinaryNodeTest.java --- 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; diff -r aa9ffb3a715e -r 5f7f0d3e3638 graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/BuiltinTest.java --- 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 { diff -r aa9ffb3a715e -r 5f7f0d3e3638 graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/ExecuteEvaluatedTest.java --- /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; + } + + } + +} diff -r aa9ffb3a715e -r 5f7f0d3e3638 graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/GuardsTest.java --- 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; } diff -r aa9ffb3a715e -r 5f7f0d3e3638 graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/TestHelper.java --- 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 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)); diff -r aa9ffb3a715e -r 5f7f0d3e3638 graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/TypeSystemTest.java --- 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 extends RootNode { + public static class TestRootNode 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); }