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 6b062aee269b78d651a63fb41437aeed80733dbb..af38cfcc846d04ece15ebe0120913ee60a101c23 100644
--- a/com.oracle.truffle.r.native/fficall/src/jni/Rembedded.c
+++ b/com.oracle.truffle.r.native/fficall/src/jni/Rembedded.c
@@ -653,3 +653,9 @@ int R_isGlobal(CTXT context) {
 	jmethodID methodID = checkGetMethodID(jniEnv, CallRFFIHelperClass, "R_isGlobal", "(Ljava/lang/Object;)I", 1);
     return (*jniEnv)->CallStaticIntMethod(jniEnv, CallRFFIHelperClass, methodID, context);
 }
+
+int R_isEqual(void* x, void* y) {
+	JNIEnv *jniEnv = getEnv();
+	jmethodID methodID = checkGetMethodID(jniEnv, CallRFFIHelperClass, "R_isEqual", "(Ljava/lang/Object;Ljava/lang/Object;)I", 1);
+    return (*jniEnv)->CallStaticIntMethod(jniEnv, CallRFFIHelperClass, methodID, x, y);
+}
diff --git a/com.oracle.truffle.r.native/include/ed_Rinterface_gcntx b/com.oracle.truffle.r.native/include/ed_Rinterface_gcntx
index 59e5f90184ec1c719a8b8d270f7e504a0947892b..88fe94a62a6d39d815458b68669f08a7f1c49529 100644
--- a/com.oracle.truffle.r.native/include/ed_Rinterface_gcntx
+++ b/com.oracle.truffle.r.native/include/ed_Rinterface_gcntx
@@ -13,6 +13,7 @@ extern SEXP R_getContextCall(CTXT);
 extern SEXP R_getContextSrcRef(CTXT);
 extern int R_insideBrowser();
 extern int R_isGlobal(CTXT);
+extern int R_isEqual(void*, void*);
 #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 81c57b689ead21ac118f5bbb0b75a327f91f9948..d1301b102fec82ae047f952d8b8ce168362be5b9 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
@@ -1383,4 +1383,11 @@ public class CallRFFIHelper {
         return rCaller == RCaller.topLevel ? 1 : 0;
     }
 
+    public static int R_isEqual(Object x, Object y) {
+        if (RFFIUtils.traceEnabled()) {
+            RFFIUtils.traceUpCall("isEqual", x, y);
+        }
+        return x == y ? 1 : 0;
+    }
+
 }