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 11bfb92d75d0e34e4117a7ad926a9ec098ba92c4..22ad74dcdfdec1f899db788decbb88905e35ee15 100644 --- a/com.oracle.truffle.r.native/fficall/src/jni/Rembedded.c +++ b/com.oracle.truffle.r.native/fficall/src/jni/Rembedded.c @@ -645,17 +645,17 @@ SEXP R_getContextSrcRef(CTXT context) { int R_insideBrowser() { JNIEnv *jniEnv = getEnv(); jmethodID methodID = checkGetMethodID(jniEnv, UpCallsRFFIClass, "R_insideBrowser", "()I", 0); - return (*jniEnv)->CallStaticIntMethod(jniEnv, UpCallsRFFIClass, methodID); + return (*jniEnv)->CallIntMethod(jniEnv, UpCallsRFFIObject, methodID); } int R_isGlobal(CTXT context) { JNIEnv *jniEnv = getEnv(); jmethodID methodID = checkGetMethodID(jniEnv, UpCallsRFFIClass, "R_isGlobal", "(Ljava/lang/Object;)I", 0); - return (*jniEnv)->CallStaticIntMethod(jniEnv, UpCallsRFFIClass, methodID, context); + return (*jniEnv)->CallIntMethod(jniEnv, UpCallsRFFIObject, methodID, context); } int R_isEqual(void* x, void* y) { JNIEnv *jniEnv = getEnv(); jmethodID methodID = checkGetMethodID(jniEnv, UpCallsRFFIClass, "R_isEqual", "(Ljava/lang/Object;Ljava/lang/Object;)I", 0); - return (*jniEnv)->CallStaticIntMethod(jniEnv, UpCallsRFFIClass, methodID, x, y); + return (*jniEnv)->CallIntMethod(jniEnv, UpCallsRFFIObject, methodID, x, y); } diff --git a/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.c b/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.c index 69d19f2aec5742fcbc96b2bd11340a324ccf3bcf..2ab54e4fda0141f22c8e2d6d34313e63cd8798d8 100644 --- a/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.c +++ b/com.oracle.truffle.r.native/fficall/src/jni/rffiutils.c @@ -88,7 +88,7 @@ static jmp_buf* callErrorJmpBufTable[CALLDEPTH_STACK_SIZE]; void init_utils(JNIEnv *env, jobject upCallsInstance) { curenv = env; - UpCallsRFFIClass = (*env)->GetObjectClass(env, upCallsInstance); + UpCallsRFFIClass = (*env)->NewGlobalRef(env, (*env)->GetObjectClass(env, upCallsInstance)); UpCallsRFFIObject = (*env)->NewGlobalRef(env, upCallsInstance); if (TRACE_ENABLED && traceFile == NULL) { if (!isEmbedded) {