From f0b4bdccc554b57dd03af81c1579de7ac5bf89e6 Mon Sep 17 00:00:00 2001
From: Lukas Stadler <lukas.stadler@oracle.com>
Date: Mon, 7 Aug 2017 14:26:56 +0200
Subject: [PATCH] more TruffleBoundary in ToStringNode

---
 .../com/oracle/truffle/r/nodes/unary/ToStringNode.java | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

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 ba6bf5714f..a1c1be8b9c 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);
-- 
GitLab