diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/managed/Managed_DownCallNodeFactory.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/managed/Managed_DownCallNodeFactory.java
index 13eb6601ce8a4908d412362f3b9261621aa06d2d..3646e3f426ded191df575aff92e8b05f42ab2cc8 100644
--- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/managed/Managed_DownCallNodeFactory.java
+++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/managed/Managed_DownCallNodeFactory.java
@@ -35,6 +35,7 @@ import java.util.List;
 import java.util.Set;
 
 import com.oracle.truffle.api.CallTarget;
+import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
 import com.oracle.truffle.api.Truffle;
 import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.interop.ForeignAccess;
@@ -140,6 +141,7 @@ public final class Managed_DownCallNodeFactory extends DownCallNodeFactory {
                 public CallTarget accessExecute(int argumentsLength) {
                     return Truffle.getRuntime().createCallTarget(new RootNode(null) {
                         @Override
+                        @TruffleBoundary
                         public Object execute(VirtualFrame frame) {
                             NativeCharArray templateBytes = (NativeCharArray) ForeignAccess.getArguments(frame).get(0);
                             String template = new String(templateBytes.getValue(), 0, templateBytes.getValue().length - 1);
@@ -191,6 +193,7 @@ public final class Managed_DownCallNodeFactory extends DownCallNodeFactory {
                 public CallTarget accessExecute(int argumentsLength) {
                     return Truffle.getRuntime().createCallTarget(new RootNode(null) {
                         @Override
+                        @TruffleBoundary
                         public Object execute(VirtualFrame frame) {
                             NativeCharArray buffer = (NativeCharArray) ForeignAccess.getArguments(frame).get(0);
                             byte[] bytes = Paths.get(".").toAbsolutePath().normalize().toString().getBytes();
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIContext.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIContext.java
index 67fa9e178a4a2ed8413f148d691f529a35a6c7ec..bc6bf9f3a9bbcbccdcbf17657e064bcfd6713c4b 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIContext.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIContext.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/interop/NativeCharArray.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/interop/NativeCharArray.java
index cf414ccbd0164fea7831a2bd7e7c38b8feb1f3e6..e35b820fb1aa50de4d89c780e7359e2cc5c8b264 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/interop/NativeCharArray.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/interop/NativeCharArray.java
@@ -58,6 +58,7 @@ public final class NativeCharArray extends NativeUInt8Array {
     /**
      * Finds the null terminator and creates the Java String accordingly.
      */
+    @TruffleBoundary
     public String getStringFromOutputBuffer() {
         assert !fakesNullTermination() : "create the buffer string via createOutputBuffer()";
         byte[] mbuf = getValue();