diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java
index f05db2645238af1a811fc35558b8746c4b71d8bf..ac7eec51f7b4f08c9eea46438764b918bcacb3a4 100644
--- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java
+++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java
@@ -1714,31 +1714,37 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI {
             public abstract long execute(Object vector);
 
             @Specialization
+            @TruffleBoundary
             protected static long get(RIntVector vector) {
                 return vector.allocateNativeContents();
             }
 
             @Specialization
+            @TruffleBoundary
             protected static long get(RLogicalVector vector) {
                 return vector.allocateNativeContents();
             }
 
             @Specialization
+            @TruffleBoundary
             protected static long get(RRawVector vector) {
                 return vector.allocateNativeContents();
             }
 
             @Specialization
+            @TruffleBoundary
             protected static long get(RDoubleVector vector) {
                 return vector.allocateNativeContents();
             }
 
             @Specialization
+            @TruffleBoundary
             protected static long get(RComplexVector vector) {
                 return vector.allocateNativeContents();
             }
 
             @Specialization
+            @TruffleBoundary
             protected static long get(CharSXPWrapper vector) {
                 return vector.allocateNativeContents();
             }
diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/NewCustomConnectionNode.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/NewCustomConnectionNode.java
index c0939de05515878935a027025e84681560e46135..dc8e816a7d5ae6cf967e8facb8c3683e1b13f0c8 100644
--- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/NewCustomConnectionNode.java
+++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/NewCustomConnectionNode.java
@@ -26,6 +26,7 @@ import static com.oracle.truffle.r.runtime.data.NativeDataAccess.readNativeStrin
 
 import java.io.IOException;
 
+import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.dsl.Cached;
 import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.interop.ForeignAccess;
@@ -45,6 +46,7 @@ public abstract class NewCustomConnectionNode extends FFIUpCallNode.Arg4 {
     }
 
     @Specialization
+    @TruffleBoundary
     Object handleStrings(String description, String mode, String className, RExternalPtr connAddr) {
         try {
             return new NativeRConnection(description, mode, className, connAddr).asVector();
@@ -58,6 +60,7 @@ public abstract class NewCustomConnectionNode extends FFIUpCallNode.Arg4 {
     }
 
     @Specialization
+    @TruffleBoundary
     Object handleAddresses(TruffleObject description, TruffleObject mode, TruffleObject className, RExternalPtr connAddr,
                     @Cached("createAsPointerNode()") Node descriptionAsPtrNode, @Cached("createAsPointerNode()") Node modeAsPtrNode, @Cached("createAsPointerNode()") Node classNameAsPtrNode) {
         try {
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/Engine.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/Engine.java
index 7da65644548245c232c56cf9a89ba12cdebfe23b..a3f5d4b98c8e8c6e2c16d0e21b4d104ae7c6390b 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/Engine.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/Engine.java
@@ -172,8 +172,9 @@ public interface Engine {
     RExpression parse(Source source) throws ParseException;
 
     /**
-     * This is the external interface from {@link org.graalvm.polyglot.Context#eval(Source)}. It is
-     * required to return a {@link CallTarget} which may be cached for future use, and the
+     * This is the external interface from
+     * {@link org.graalvm.polyglot.Context#eval(org.graalvm.polyglot.Source)}. It is required to
+     * return a {@link CallTarget} which may be cached for future use, and the
      * {@link org.graalvm.polyglot.Context} is responsible for actually invoking the call target.
      */
     CallTarget parseToCallTarget(Source source, MaterializedFrame executionFrame) throws ParseException;
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/CharSXPWrapper.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/CharSXPWrapper.java
index d1d4cab104a51549b3e5fc15fd43f2f93873ed59..1f7f724a112834a8b6167f6033fd92acd594c93b 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/CharSXPWrapper.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/CharSXPWrapper.java
@@ -24,6 +24,7 @@ package com.oracle.truffle.r.runtime.data;
 
 import java.nio.charset.StandardCharsets;
 
+import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.r.runtime.RRuntime;
 
 /**
@@ -48,6 +49,7 @@ public final class CharSXPWrapper extends RObject implements RTruffleObject {
         this.contents = contents;
     }
 
+    @TruffleBoundary
     public String getContents() {
         if (this == NA) {
             // The NA string may have been moved to the native space if someone called R_CHAR on it,
@@ -58,10 +60,12 @@ public final class CharSXPWrapper extends RObject implements RTruffleObject {
         return NativeDataAccess.getData(this, contents);
     }
 
+    @TruffleBoundary
     public byte getByteAt(int index) {
         return NativeDataAccess.getDataAt(this, getBytes(), index);
     }
 
+    @TruffleBoundary
     public int getLength() {
         return NativeDataAccess.getDataLength(this, getBytes());
     }