diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ToStringNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ToStringNode.java index ba6bf5714fabbcb7f76cb23751ebbd3ccd328cf7..a1c1be8b9cc5536b6745ef7bc14201e0d5c8f37e 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ToStringNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/ToStringNode.java @@ -22,6 +22,7 @@ */ package com.oracle.truffle.r.nodes.unary; +import com.oracle.truffle.api.CompilerAsserts; import com.oracle.truffle.api.CompilerDirectives; import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; import com.oracle.truffle.api.dsl.Cached; @@ -157,8 +158,8 @@ public abstract class ToStringNode extends RBaseNode { String apply(int index, boolean quotes, String separator); } - @TruffleBoundary private static String createResultForVector(RAbstractVector vector, boolean quotes, String separator, String empty, ElementFunction elementFunction) { + CompilerAsserts.neverPartOfCompilation(); int length = vector.getLength(); if (length == 0) { return empty; @@ -174,40 +175,43 @@ public abstract class ToStringNode extends RBaseNode { } @Specialization + @TruffleBoundary protected String toString(RAbstractIntVector vector, boolean quotes, String separator) { return createResultForVector(vector, quotes, separator, "integer(0)", (index, q, s) -> toString(vector.getDataAt(index), q, s)); } @Specialization @TruffleBoundary - // boundary because of complex numerical string formatting protected String toString(RAbstractDoubleVector vector, boolean quotes, String separator) { return createResultForVector(vector, quotes, separator, "numeric(0)", (index, q, s) -> toString(vector.getDataAt(index), q, s)); } @Specialization @TruffleBoundary - // boundary because of string quoting protected String toString(RAbstractStringVector vector, boolean quotes, String separator) { return createResultForVector(vector, quotes, separator, "character(0)", (index, q, s) -> toString(vector.getDataAt(index), q, s)); } @Specialization + @TruffleBoundary protected String toString(RAbstractLogicalVector vector, boolean quotes, String separator) { return createResultForVector(vector, quotes, separator, "logical(0)", (index, q, s) -> toString(vector.getDataAt(index), q, s)); } @Specialization + @TruffleBoundary protected String toString(RAbstractRawVector vector, boolean quotes, String separator) { return createResultForVector(vector, quotes, separator, "raw(0)", (index, q, s) -> toString(vector.getDataAt(index), q, s)); } @Specialization + @TruffleBoundary protected String toString(RAbstractComplexVector vector, boolean quotes, String separator) { return createResultForVector(vector, quotes, separator, "complex(0)", (index, q, s) -> toString(vector.getDataAt(index), q, s)); } @Specialization + @TruffleBoundary protected String toString(RList vector, boolean quotes, String separator) { return createResultForVector(vector, quotes, separator, "list()", (index, q, s) -> { Object value = vector.getDataAt(index);