diff --git a/com.oracle.truffle.r.native/fficall/src/jni/Rinternals.c b/com.oracle.truffle.r.native/fficall/src/jni/Rinternals.c
index 8afd991bc4b1dce8e6ec357af333dd33b0728be8..710affdd150797f463f9098c7b5322de2b0715bd 100644
--- a/com.oracle.truffle.r.native/fficall/src/jni/Rinternals.c
+++ b/com.oracle.truffle.r.native/fficall/src/jni/Rinternals.c
@@ -1562,7 +1562,7 @@ int R_check_class_etc (SEXP x, const char **valid) {
 	return R_check_class_etc_helper(x, valid, jniGetMethodsNamespace);
 }
 
-SEXP R_PreserveObject(SEXP x) {
+SEXP R_PreserveObject_FASTR(SEXP x) {
 	// convert to a JNI global ref until explicitly released
 	return createGlobalRef(getEnv(), x, 0);
 }
diff --git a/com.oracle.truffle.r.native/fficall/src/truffle_llvm/Rinternals.c b/com.oracle.truffle.r.native/fficall/src/truffle_llvm/Rinternals.c
index 473de0261a9cacc21e16f43a3ab2ea4403d11a3e..6d04555401fa4b32eb746bb7ac6ebc545d0825ca 100644
--- a/com.oracle.truffle.r.native/fficall/src/truffle_llvm/Rinternals.c
+++ b/com.oracle.truffle.r.native/fficall/src/truffle_llvm/Rinternals.c
@@ -1085,7 +1085,7 @@ int R_check_class_etc (SEXP x, const char **valid) {
 	return (int) unimplemented("R_check_class_etc");
 }
 
-SEXP R_PreserveObject(SEXP x) {
+SEXP R_PreserveObject_FASTR(SEXP x) {
 	return unimplemented("R_PreserveObject");
 }
 
diff --git a/com.oracle.truffle.r.native/fficall/src/truffle_nfi/Rinternals.c b/com.oracle.truffle.r.native/fficall/src/truffle_nfi/Rinternals.c
index 6b5569d2973f0d2bf0b3b963739adfe56a445955..05e517b2013d5bdf3b8fa38f283eac167cf8381b 100644
--- a/com.oracle.truffle.r.native/fficall/src/truffle_nfi/Rinternals.c
+++ b/com.oracle.truffle.r.native/fficall/src/truffle_nfi/Rinternals.c
@@ -1168,7 +1168,7 @@ int R_check_class_etc (SEXP x, const char **valid) {
 	return R_check_class_etc_helper(x, valid, nfiGetMethodsNamespace);
 }
 
-SEXP R_PreserveObject(SEXP x) {
+SEXP R_PreserveObject_FASTR(SEXP x) {
     TruffleEnv* env = (*truffleContext)->getTruffleEnv(truffleContext);
 	return (*env)->newObjectRef(env, x);
 }
diff --git a/com.oracle.truffle.r.native/version.source b/com.oracle.truffle.r.native/version.source
index 9902f17848a8974ab57d57999b74a63198fe6e23..f04c001f3f7fd5d290d0264b4a2c35f7b159ac42 100644
--- a/com.oracle.truffle.r.native/version.source
+++ b/com.oracle.truffle.r.native/version.source
@@ -1 +1 @@
-28
+29
diff --git a/mx.fastr/mx_fastr_edinclude.py b/mx.fastr/mx_fastr_edinclude.py
index bed40f5912044d02c67819cfd80e0c41f4fd87bc..1ca1490bc01cf29bcb8a3133320c43ceb3a174e3 100644
--- a/mx.fastr/mx_fastr_edinclude.py
+++ b/mx.fastr/mx_fastr_edinclude.py
@@ -84,7 +84,8 @@ use_internals_end = '''#endif
 
 '''
 preserveObject = '''#ifdef FASTR
-SEXP R_PreserveObject(SEXP);
+SEXP R_PreserveObject_FASTR(SEXP);
+#define R_PreserveObject(var) ((var) = R_PreserveObject_FASTR((var)))
 #else
 '''