From a8110360ffe72248141e520dd0e29ed51868b622 Mon Sep 17 00:00:00 2001 From: Florian Angerer <florian.angerer@oracle.com> Date: Fri, 1 Sep 2017 15:20:18 +0200 Subject: [PATCH] Casting int sequence to string sequence in CastStringNode. --- .../oracle/truffle/r/nodes/unary/CastStringNode.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java index ebec5af6e4..26dcb96817 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastStringNode.java @@ -33,7 +33,9 @@ import com.oracle.truffle.r.runtime.RDeparse; import com.oracle.truffle.r.runtime.RError; import com.oracle.truffle.r.runtime.RRuntime; import com.oracle.truffle.r.runtime.data.RDataFactory; +import com.oracle.truffle.r.runtime.data.RIntSequence; import com.oracle.truffle.r.runtime.data.RLanguage; +import com.oracle.truffle.r.runtime.data.RStringSequence; import com.oracle.truffle.r.runtime.data.RStringVector; import com.oracle.truffle.r.runtime.data.RSymbol; import com.oracle.truffle.r.runtime.data.model.RAbstractContainer; @@ -70,12 +72,21 @@ public abstract class CastStringNode extends CastStringBaseNode { return ret; } + protected boolean isIntSequence(RAbstractContainer c) { + return c instanceof RIntSequence; + } + @Specialization protected RStringVector doStringVector(RStringVector vector) { return vector; } @Specialization + protected RStringSequence doStringVector(RIntSequence vector) { + return RDataFactory.createStringSequence("", "", vector.getStart(), vector.getStride(), vector.getLength()); + } + + @Specialization(guards = "!isIntSequence(operandIn)") protected RStringVector doAbstractContainer(RAbstractContainer operandIn, @Cached("createClassProfile()") ValueProfile operandProfile, @Cached("createBinaryProfile()") ConditionProfile isLanguageProfile) { -- GitLab