diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Quantifier.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Quantifier.java index d2f9d9588bb768a296b9aff99157fc12a5578684..815cb6903b9032172178113a74786b9a908701b4 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Quantifier.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Quantifier.java @@ -28,6 +28,7 @@ import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.logicalValue import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.size; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.toBoolean; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.typeName; +import static com.oracle.truffle.r.nodes.builtin.casts.fluent.CastNodeBuilder.newCastBuilder; import com.oracle.truffle.api.CompilerDirectives; import com.oracle.truffle.api.dsl.Cached; @@ -36,7 +37,6 @@ import com.oracle.truffle.api.nodes.ExplodeLoop; import com.oracle.truffle.api.profiles.BranchProfile; import com.oracle.truffle.api.profiles.ValueProfile; import com.oracle.truffle.r.nodes.builtin.CastBuilder; -import com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef; import com.oracle.truffle.r.nodes.builtin.RBuiltinNode; import com.oracle.truffle.r.nodes.unary.CastNode; import com.oracle.truffle.r.runtime.RError; @@ -84,10 +84,12 @@ public abstract class Quantifier extends RBuiltinNode { } private void createArgCast(int index) { - CastBuilder argCastBuilder = new CastBuilder(); - argCastBuilder.arg(0).allowNull().shouldBe(integerValue().or(logicalValue()).or(instanceOf(RAbstractVector.class).and(size(0))), RError.Message.COERCING_ARGUMENT, typeName(), - "logical").asLogicalVector(); - argCastNodes[index] = insert(new ProfileCastNode(argCastBuilder.getCasts()[0])); + // @formatter:off + argCastNodes[index] = insert(newCastBuilder().allowNull(). + shouldBe(integerValue().or(logicalValue()).or(instanceOf(RAbstractVector.class).and(size(0))), + RError.Message.COERCING_ARGUMENT, typeName(), "logical"). + asLogicalVector().buildCastNode()); + // @formatter:on } protected boolean emptyVectorResult() { diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/StandardGeneric.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/StandardGeneric.java index 241c5ff0c6e325897adb3af7268dcb7519438571..a23e27aca508e3968d1a3bc66a9d0b36c729fb37 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/StandardGeneric.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/StandardGeneric.java @@ -15,6 +15,7 @@ package com.oracle.truffle.r.nodes.builtin.base; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.instanceOf; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.lengthGt; import static com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef.stringValue; +import static com.oracle.truffle.r.nodes.builtin.casts.fluent.CastNodeBuilder.newCastBuilder; import static com.oracle.truffle.r.runtime.RVisibility.CUSTOM; import static com.oracle.truffle.r.runtime.builtins.RBehavior.COMPLEX; import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.PRIMITIVE; @@ -72,11 +73,8 @@ public abstract class StandardGeneric extends RBuiltinNode { @Child private CastNode castIntScalar; @Child private CastNode castStringScalar; { - CastBuilder builder = new CastBuilder(2); - builder.arg(0).asIntegerVector().findFirst(RRuntime.INT_NA); - builder.arg(1).asStringVector().findFirst(RRuntime.STRING_NA); - castIntScalar = builder.getCasts()[0]; - castStringScalar = builder.getCasts()[1]; + castIntScalar = newCastBuilder().asIntegerVector().findFirst(RRuntime.INT_NA).buildCastNode(); + castStringScalar = newCastBuilder().asStringVector().findFirst(RRuntime.STRING_NA).buildCastNode(); } private final BranchProfile noGenFunFound = BranchProfile.create(); diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/NewObject.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/NewObject.java index 675a6acb09ec5c919cc36f44b4ccddc8f8a26175..747246759b9262001d2927459d6d0f9d71c6f330 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/NewObject.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/NewObject.java @@ -12,6 +12,8 @@ */ package com.oracle.truffle.r.nodes.objects; +import static com.oracle.truffle.r.nodes.builtin.casts.fluent.CastNodeBuilder.newCastBuilder; + import com.oracle.truffle.api.CompilerDirectives; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.r.nodes.access.AccessSlotNode; @@ -41,11 +43,8 @@ public abstract class NewObject extends RExternalBuiltinNode.Arg1 { @Child private CastNode castStringScalar; @Child private CastNode castLogicalScalar; { - CastBuilder builder = new CastBuilder(); - builder.arg(0).asStringVector().findFirst(RRuntime.STRING_NA); - builder.arg(1).asLogicalVector().findFirst(RRuntime.LOGICAL_NA); - castStringScalar = builder.getCasts()[0]; - castLogicalScalar = builder.getCasts()[1]; + castStringScalar = newCastBuilder().asStringVector().findFirst(RRuntime.STRING_NA).buildCastNode(); + castLogicalScalar = newCastBuilder().asLogicalVector().findFirst(RRuntime.LOGICAL_NA).buildCastNode(); } @Override