diff --git a/com.oracle.truffle.r.native/fficall/src/jni/Rembedded.c b/com.oracle.truffle.r.native/fficall/src/jni/Rembedded.c
index 61431ad1d6d0b6c2717a6d7d17d8babc84c26456..9603887b123187a08901878dff54ff49fbbe2701 100644
--- a/com.oracle.truffle.r.native/fficall/src/jni/Rembedded.c
+++ b/com.oracle.truffle.r.native/fficall/src/jni/Rembedded.c
@@ -627,3 +627,9 @@ int R_insideBrowser() {
 	jmethodID methodID = checkGetMethodID(jniEnv, CallRFFIHelperClass, "R_insideBrowser", "()I", 1);
     return (*jniEnv)->CallStaticIntMethod(jniEnv, CallRFFIHelperClass, methodID);
 }
+
+int R_isGlobal(CTXT context) {
+	JNIEnv *jniEnv = getEnv();
+	jmethodID methodID = checkGetMethodID(jniEnv, CallRFFIHelperClass, "R_isGlobal", "(Ljava/lang/Object;)I", 1);
+    return (*jniEnv)->CallStaticIntMethod(jniEnv, CallRFFIHelperClass, methodID, context);
+}
diff --git a/com.oracle.truffle.r.native/include/ed_Rinterface_gcntx b/com.oracle.truffle.r.native/include/ed_Rinterface_gcntx
index f9cf0613c24ce9f66f6d1c864deb23a289a24224..59e5f90184ec1c719a8b8d270f7e504a0947892b 100644
--- a/com.oracle.truffle.r.native/include/ed_Rinterface_gcntx
+++ b/com.oracle.truffle.r.native/include/ed_Rinterface_gcntx
@@ -12,6 +12,7 @@ extern SEXP R_getContextFun(CTXT);
 extern SEXP R_getContextCall(CTXT);
 extern SEXP R_getContextSrcRef(CTXT);
 extern int R_insideBrowser();
+extern int R_isGlobal(CTXT);
 #else
 .
 +1
diff --git a/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jnr/CallRFFIHelper.java b/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jnr/CallRFFIHelper.java
index 731cbc5ac2557d606af6fd9b8002b45447355926..8ba6ddcf2560239fe56939ca258f52051a885bc4 100644
--- a/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jnr/CallRFFIHelper.java
+++ b/com.oracle.truffle.r.runtime.ffi/src/com/oracle/truffle/r/runtime/ffi/jnr/CallRFFIHelper.java
@@ -1386,4 +1386,14 @@ public class CallRFFIHelper {
     public static int R_insideBrowser() {
         return RContext.getInstance().stateInstrumentation.getBrowserState().inBrowser() ? 1 : 0;
     }
+
+    public static int R_isGlobal(Object c) {
+        if (RFFIUtils.traceEnabled()) {
+            RFFIUtils.traceUpCall("isGlobal", c);
+        }
+        RCaller rCaller = guaranteeInstanceOf(c, RCaller.class);
+
+        return rCaller == topLevel ? 1 : 0;
+    }
+
 }