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 '''