diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Vector.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Vector.java index a86cc41c076bb2d8b3d2560e9848cce0b913b807..3496b68623a38ad5c7cc75c9a61f6036fbb5281e 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Vector.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Vector.java @@ -27,6 +27,7 @@ import static com.oracle.truffle.r.runtime.RBuiltinKind.*; import java.util.*; import com.oracle.truffle.api.dsl.*; +import com.oracle.truffle.api.utilities.*; import com.oracle.truffle.r.nodes.*; import com.oracle.truffle.r.nodes.access.*; import com.oracle.truffle.r.nodes.builtin.*; @@ -38,6 +39,8 @@ import com.oracle.truffle.r.runtime.data.model.*; @RBuiltin(name = "vector", kind = INTERNAL, parameterNames = {"mode", "length"}) public abstract class Vector extends RBuiltinNode { + private final ValueProfile modeProfile = ValueProfile.createIdentityProfile(); + @Override public RNode[] getParameterValues() { // mode = "logical", length = 0 @@ -54,7 +57,7 @@ public abstract class Vector extends RBuiltinNode { @Specialization protected RAbstractVector vector(String mode, int length) { controlVisibility(); - switch (mode) { + switch (modeProfile.profile(mode)) { case "character": return RDataFactory.createStringVector(length); case "logical": @@ -72,5 +75,4 @@ public abstract class Vector extends RBuiltinNode { throw RError.error(getEncapsulatingSourceSection(), RError.Message.CANNOT_MAKE_VECTOR_OF_MODE, mode); } } - }