diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseGammaFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseGammaFunctions.java index e883fc44c570cd9ca10913bff2b7624ae5095602..005d49ee57fc65f2b4570d33060f89c9bb0bca5f 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseGammaFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseGammaFunctions.java @@ -28,9 +28,8 @@ import static com.oracle.truffle.r.runtime.nmath.RMath.fmax2; import com.oracle.truffle.api.CompilerDirectives; import com.oracle.truffle.api.CompilerDirectives.CompilationFinal; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; -import com.oracle.truffle.api.dsl.NodeChild; -import com.oracle.truffle.api.dsl.NodeChildren; import com.oracle.truffle.api.dsl.Specialization; +import com.oracle.truffle.api.nodes.Node; import com.oracle.truffle.r.nodes.builtin.RBuiltinNode; import com.oracle.truffle.r.nodes.builtin.base.BaseGammaFunctionsFactory.DpsiFnCalcNodeGen; import com.oracle.truffle.r.runtime.RError; @@ -44,7 +43,6 @@ import com.oracle.truffle.r.runtime.data.model.RAbstractIntVector; import com.oracle.truffle.r.runtime.data.model.RAbstractLogicalVector; import com.oracle.truffle.r.runtime.nmath.GammaFunctions; import com.oracle.truffle.r.runtime.nmath.RMath; -import com.oracle.truffle.r.runtime.nodes.RNode; import com.oracle.truffle.r.runtime.ops.na.NACheck; public class BaseGammaFunctions { @@ -110,7 +108,7 @@ public class BaseGammaFunctions { private double dpsiFnCalc(double x, int n, int kode, double ans) { if (dpsiFnCalc == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); - dpsiFnCalc = insert(DpsiFnCalcNodeGen.create(null, null, null, null)); + dpsiFnCalc = insert(DpsiFnCalcNodeGen.create()); } return dpsiFnCalc.executeDouble(x, n, kode, ans); } @@ -156,8 +154,7 @@ public class BaseGammaFunctions { } } - @NodeChildren({@NodeChild(value = "x"), @NodeChild(value = "n"), @NodeChild(value = "kode"), @NodeChild(value = "ans")}) - protected abstract static class DpsiFnCalc extends RNode { + protected abstract static class DpsiFnCalc extends Node { // the following is transcribed from polygamma.c @@ -179,7 +176,7 @@ public class BaseGammaFunctions { private double dpsiFnCalc(double x, int n, int kode, double ans) { if (dpsiFnCalc == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); - dpsiFnCalc = insert(DpsiFnCalcNodeGen.create(null, null, null, null)); + dpsiFnCalc = insert(DpsiFnCalcNodeGen.create()); } return dpsiFnCalc.executeDouble(x, n, kode, ans); } diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/SpecialsUtils.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/SpecialsUtils.java index 0cd7b5397c8821cdc1278d237bf9074be477661f..501753254b73bcfac9933452900ba9ae7c2b3929 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/SpecialsUtils.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/SpecialsUtils.java @@ -25,7 +25,6 @@ package com.oracle.truffle.r.nodes.builtin.base.infix; import com.oracle.truffle.api.CompilerDirectives; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; import com.oracle.truffle.api.dsl.NodeChild; -import com.oracle.truffle.api.dsl.NodeChildren; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.dsl.TypeSystemReference; import com.oracle.truffle.api.frame.VirtualFrame; @@ -172,7 +171,7 @@ class SpecialsUtils { } @NodeInfo(cost = NodeCost.NONE) - @NodeChildren({@NodeChild(value = "delegate", type = RNode.class)}) + @NodeChild(value = "delegate", type = RNode.class) @TypeSystemReference(EmptyTypeSystemFlatLayout.class) public abstract static class ConvertIndex extends RNode { diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/Subscript.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/Subscript.java index 176b95d29c7d08835e24a8acc0ab34b0cf7c7d8a..144f70966bb6ff034fb6de41078cce871018e1e5 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/Subscript.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/Subscript.java @@ -31,7 +31,6 @@ import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE; import com.oracle.truffle.api.dsl.Cached; import com.oracle.truffle.api.dsl.Fallback; import com.oracle.truffle.api.dsl.NodeChild; -import com.oracle.truffle.api.dsl.NodeChildren; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.dsl.TypeSystemReference; import com.oracle.truffle.api.frame.VirtualFrame; @@ -66,7 +65,8 @@ import com.oracle.truffle.r.runtime.nodes.RNode; /** * Subscript code for vectors minus list is the same as subset code, this class allows sharing it. */ -@NodeChildren({@NodeChild(value = "vector", type = ProfiledValue.class), @NodeChild(value = "index", type = ConvertIndex.class)}) +@NodeChild(value = "vector", type = ProfiledValue.class) +@NodeChild(value = "index", type = ConvertIndex.class) abstract class SubscriptSpecialBase extends SubscriptSpecialCommon { protected SubscriptSpecialBase(boolean inReplacement) { @@ -104,7 +104,9 @@ abstract class SubscriptSpecialBase extends SubscriptSpecialCommon { /** * Subscript code for matrices minus list is the same as subset code, this class allows sharing it. */ -@NodeChildren({@NodeChild(value = "vector", type = ProfiledValue.class), @NodeChild(value = "index1", type = ConvertIndex.class), @NodeChild(value = "index2", type = ConvertIndex.class)}) +@NodeChild(value = "vector", type = ProfiledValue.class) +@NodeChild(value = "index1", type = ConvertIndex.class) +@NodeChild(value = "index2", type = ConvertIndex.class) abstract class SubscriptSpecial2Base extends SubscriptSpecial2Common { protected SubscriptSpecial2Base(boolean inReplacement) { diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/UpdateSubscript.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/UpdateSubscript.java index 432d1c31a52325e64196631bab028e1ef0c15ca2..cfc2f94db133139d1c2ff70524b496ab21a1b2ae 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/UpdateSubscript.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/UpdateSubscript.java @@ -32,7 +32,6 @@ import java.util.Arrays; import com.oracle.truffle.api.dsl.Fallback; import com.oracle.truffle.api.dsl.NodeChild; -import com.oracle.truffle.api.dsl.NodeChildren; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.dsl.TypeSystemReference; import com.oracle.truffle.api.frame.VirtualFrame; @@ -60,7 +59,9 @@ import com.oracle.truffle.r.runtime.data.RStringVector; import com.oracle.truffle.r.runtime.nodes.RNode; import com.oracle.truffle.r.runtime.ops.na.NACheck; -@NodeChildren({@NodeChild(value = "vector", type = ProfiledValue.class), @NodeChild(value = "index", type = ConvertIndex.class), @NodeChild(value = "value", type = RNode.class)}) +@NodeChild(value = "vector", type = ProfiledValue.class) +@NodeChild(value = "index", type = ConvertIndex.class) +@NodeChild(value = "value", type = RNode.class) abstract class UpdateSubscriptSpecial extends SubscriptSpecialCommon { protected UpdateSubscriptSpecial(boolean inReplacement) { @@ -108,8 +109,10 @@ abstract class UpdateSubscriptSpecial extends SubscriptSpecialCommon { } } -@NodeChildren({@NodeChild(value = "vector", type = ProfiledValue.class), @NodeChild(value = "index1", type = ConvertIndex.class), @NodeChild(value = "index2", type = ConvertIndex.class), - @NodeChild(value = "value", type = RNode.class)}) +@NodeChild(value = "vector", type = ProfiledValue.class) +@NodeChild(value = "index1", type = ConvertIndex.class) +@NodeChild(value = "index2", type = ConvertIndex.class) +@NodeChild(value = "value", type = RNode.class) abstract class UpdateSubscriptSpecial2 extends SubscriptSpecial2Common { protected UpdateSubscriptSpecial2(boolean inReplacement) { diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryNode.java index 11825aaf02cece30f2205fb0ea953ac6e8b5fc73..bccc9d44c5a12754063710e80d39ac51c788e2fa 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryNode.java @@ -23,10 +23,10 @@ package com.oracle.truffle.r.nodes.binary; import com.oracle.truffle.api.dsl.NodeChild; -import com.oracle.truffle.api.dsl.NodeChildren; import com.oracle.truffle.r.runtime.nodes.RNode; -@NodeChildren({@NodeChild(value = "left", type = RNode.class), @NodeChild(value = "right", type = RNode.class)}) +@NodeChild(value = "left", type = RNode.class) +@NodeChild(value = "right", type = RNode.class) abstract class BinaryNode extends RNode { protected abstract RNode getLeft(); diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastToVectorNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastToVectorNode.java index f4f299fa5e6f591b38bbb5bed7accdbe771d427c..ff0088f66c7c7f178dd5d1150d23a63e3fbc0168 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastToVectorNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastToVectorNode.java @@ -22,7 +22,6 @@ */ package com.oracle.truffle.r.nodes.unary; -import com.oracle.truffle.api.dsl.NodeField; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.r.runtime.data.RDataFactory; import com.oracle.truffle.r.runtime.data.RFunction; @@ -30,14 +29,21 @@ import com.oracle.truffle.r.runtime.data.RMissing; import com.oracle.truffle.r.runtime.data.RNull; import com.oracle.truffle.r.runtime.data.model.RAbstractVector; -@NodeField(name = "preserveNonVector", type = boolean.class) public abstract class CastToVectorNode extends CastNode { - public abstract boolean isPreserveNonVector(); + private final boolean preserveNonVector; + + protected CastToVectorNode(boolean preserveNonVector) { + this.preserveNonVector = preserveNonVector; + } + + public final boolean isPreserveNonVector() { + return preserveNonVector; + } @Specialization protected Object castNull(@SuppressWarnings("unused") RNull rnull) { - if (isPreserveNonVector()) { + if (preserveNonVector) { return RNull.instance; } else { return RDataFactory.createList(); @@ -46,7 +52,7 @@ public abstract class CastToVectorNode extends CastNode { @Specialization protected Object castMissing(@SuppressWarnings("unused") RMissing missing) { - if (isPreserveNonVector()) { + if (preserveNonVector) { return RMissing.instance; } else { return RDataFactory.createList(); @@ -55,7 +61,7 @@ public abstract class CastToVectorNode extends CastNode { @Specialization protected Object castFunction(RFunction f) { - if (isPreserveNonVector()) { + if (preserveNonVector) { return f; } else { return RDataFactory.createList(); diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java index 82b940252a7b6c985cb83f8fa8c35a8b31c1c878..df64052e589b5aa5367166c17f471465df6cdc95 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ConvertBooleanNode.java @@ -23,7 +23,6 @@ package com.oracle.truffle.r.nodes.unary; import com.oracle.truffle.api.dsl.NodeChild; -import com.oracle.truffle.api.dsl.NodeChildren; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.frame.VirtualFrame; import com.oracle.truffle.api.profiles.BranchProfile; @@ -44,7 +43,7 @@ import com.oracle.truffle.r.runtime.nodes.RNode; import com.oracle.truffle.r.runtime.nodes.RSyntaxNode; import com.oracle.truffle.r.runtime.ops.na.NAProfile; -@NodeChildren({@NodeChild("operand")}) +@NodeChild("operand") public abstract class ConvertBooleanNode extends RNode { private final NAProfile naProfile = NAProfile.create(); diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstIntNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstIntNode.java index 4b20e6deda421058dad2d43c4845b25b74dcb6a0..54d04e8c92348567801b540b933141b02fc5eb73 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstIntNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstIntNode.java @@ -22,25 +22,26 @@ */ package com.oracle.truffle.r.nodes.unary; -import com.oracle.truffle.api.dsl.NodeField; -import com.oracle.truffle.api.dsl.NodeFields; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.profiles.BranchProfile; import com.oracle.truffle.api.profiles.ConditionProfile; import com.oracle.truffle.r.runtime.RError; +import com.oracle.truffle.r.runtime.RError.Message; import com.oracle.truffle.r.runtime.data.model.RAbstractIntVector; -@NodeFields({@NodeField(name = "emptyError", type = RError.Message.class), @NodeField(name = "sizeWarning", type = RError.Message.class), @NodeField(name = "argumentName", type = String.class), - @NodeField(name = "defaultValue", type = int.class)}) public abstract class FirstIntNode extends CastNode { - protected abstract RError.Message getEmptyError(); + private final RError.Message emptyError; + private final RError.Message sizeWarning; + private final String argumentName; + private final int defaultValue; - protected abstract RError.Message getSizeWarning(); - - protected abstract String getArgumentName(); - - protected abstract int getDefaultValue(); + protected FirstIntNode(Message emptyError, Message sizeWarning, String argumentName, int defaultValue) { + this.emptyError = emptyError; + this.sizeWarning = sizeWarning; + this.argumentName = argumentName; + this.defaultValue = defaultValue; + } public abstract int executeInt(Object value); @@ -55,14 +56,14 @@ public abstract class FirstIntNode extends CastNode { @Specialization(replaces = "firstScalar") protected int firstVector(RAbstractIntVector argument) { if (!lengthOneProfile.profile(argument.getLength() == 1)) { - if (getSizeWarning() != null) { - RError.warning(this, getSizeWarning(), getArgumentName()); + if (sizeWarning != null) { + RError.warning(this, sizeWarning, argumentName); if (argument.getLength() == 0) { - return getDefaultValue(); + return defaultValue; } - } else if (getEmptyError() != null && argument.getLength() == 0) { + } else if (emptyError != null && argument.getLength() == 0) { errorProfile.enter(); - throw RError.error(this, getEmptyError(), getArgumentName()); + throw RError.error(this, emptyError, argumentName); } } return argument.getDataAt(0); diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstStringNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstStringNode.java index ef7bb5c6ddca1326fc7dd531bc40e6028da07f09..a1672bbea11b297a6b12a90dc584590e27cb9335 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstStringNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FirstStringNode.java @@ -23,20 +23,22 @@ package com.oracle.truffle.r.nodes.unary; import com.oracle.truffle.api.dsl.Fallback; -import com.oracle.truffle.api.dsl.NodeField; -import com.oracle.truffle.api.dsl.NodeFields; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.profiles.BranchProfile; import com.oracle.truffle.api.profiles.ConditionProfile; import com.oracle.truffle.r.runtime.RError; +import com.oracle.truffle.r.runtime.RError.Message; import com.oracle.truffle.r.runtime.data.model.RAbstractStringVector; -@NodeFields({@NodeField(name = "emptyError", type = RError.Message.class), @NodeField(name = "argumentName", type = String.class)}) public abstract class FirstStringNode extends CastNode { - protected abstract RError.Message getEmptyError(); + private final RError.Message emptyError; + private final String argumentName; - protected abstract String getArgumentName(); + protected FirstStringNode(Message emptyError, String argumentName) { + this.emptyError = emptyError; + this.argumentName = argumentName; + } private final ConditionProfile lengthOneProfile = ConditionProfile.createBinaryProfile(); private final BranchProfile errorProfile = BranchProfile.create(); @@ -54,14 +56,14 @@ public abstract class FirstStringNode extends CastNode { protected String firstVector(RAbstractStringVector argument) { if (!lengthOneProfile.profile(argument.getLength() == 1)) { errorProfile.enter(); - throw RError.error(RError.SHOW_CALLER, getEmptyError(), getArgumentName()); + throw RError.error(RError.SHOW_CALLER, emptyError, argumentName); } return argument.getDataAt(0); } @Fallback protected String firstVectorFallback(@SuppressWarnings("unused") Object argument) { - throw RError.error(RError.SHOW_CALLER, getEmptyError(), getArgumentName()); + throw RError.error(RError.SHOW_CALLER, emptyError, argumentName); } public static FirstStringNode createWithError(RError.Message emptyError, String argumentName) {