< prev index next >

src/hotspot/share/prims/jni.cpp

Print this page

        

*** 751,761 **** JNIWrapper("NewGlobalRef"); HOTSPOT_JNI_NEWGLOBALREF_ENTRY(env, ref); Handle ref_handle(thread, JNIHandles::resolve(ref)); ! jobject ret = JNIHandles::make_global(ref_handle); HOTSPOT_JNI_NEWGLOBALREF_RETURN(ret); return ret; JNI_END --- 751,761 ---- JNIWrapper("NewGlobalRef"); HOTSPOT_JNI_NEWGLOBALREF_ENTRY(env, ref); Handle ref_handle(thread, JNIHandles::resolve(ref)); ! jobject ret = JNIHandles::make_global(ref_handle, AllocFailStrategy::RETURN_NULL); HOTSPOT_JNI_NEWGLOBALREF_RETURN(ret); return ret; JNI_END
*** 795,805 **** JNI_ENTRY(jobject, jni_NewLocalRef(JNIEnv *env, jobject ref)) JNIWrapper("NewLocalRef"); HOTSPOT_JNI_NEWLOCALREF_ENTRY(env, ref); ! jobject ret = JNIHandles::make_local(THREAD, JNIHandles::resolve(ref)); HOTSPOT_JNI_NEWLOCALREF_RETURN(ret); return ret; JNI_END --- 795,806 ---- JNI_ENTRY(jobject, jni_NewLocalRef(JNIEnv *env, jobject ref)) JNIWrapper("NewLocalRef"); HOTSPOT_JNI_NEWLOCALREF_ENTRY(env, ref); ! jobject ret = JNIHandles::make_local(THREAD, JNIHandles::resolve(ref), ! AllocFailStrategy::RETURN_NULL); HOTSPOT_JNI_NEWLOCALREF_RETURN(ret); return ret; JNI_END
*** 3048,3058 **** JNI_ENTRY(jweak, jni_NewWeakGlobalRef(JNIEnv *env, jobject ref)) JNIWrapper("jni_NewWeakGlobalRef"); HOTSPOT_JNI_NEWWEAKGLOBALREF_ENTRY(env, ref); Handle ref_handle(thread, JNIHandles::resolve(ref)); ! jweak ret = JNIHandles::make_weak_global(ref_handle); HOTSPOT_JNI_NEWWEAKGLOBALREF_RETURN(ret); return ret; JNI_END // Must be JNI_ENTRY (with HandleMark) --- 3049,3062 ---- JNI_ENTRY(jweak, jni_NewWeakGlobalRef(JNIEnv *env, jobject ref)) JNIWrapper("jni_NewWeakGlobalRef"); HOTSPOT_JNI_NEWWEAKGLOBALREF_ENTRY(env, ref); Handle ref_handle(thread, JNIHandles::resolve(ref)); ! jweak ret = JNIHandles::make_weak_global(ref_handle, AllocFailStrategy::RETURN_NULL); ! if (ret == NULL) { ! THROW_OOP_(Universe::out_of_memory_error_c_heap(), NULL); ! } HOTSPOT_JNI_NEWWEAKGLOBALREF_RETURN(ret); return ret; JNI_END // Must be JNI_ENTRY (with HandleMark)
*** 3125,3134 **** --- 3129,3144 ---- // Make global references for these bufferClass = (jclass) env->NewGlobalRef(bufferClass); directBufferClass = (jclass) env->NewGlobalRef(directBufferClass); directByteBufferClass = (jclass) env->NewGlobalRef(directByteBufferClass); + // Global refs will be NULL if out-of-memory (no exception is pending) + if (bufferClass == NULL || directBufferClass == NULL || directByteBufferClass == NULL) { + directBufferSupportInitializeFailed = 1; + return false; + } + // Get needed field and method IDs directByteBufferConstructor = env->GetMethodID(directByteBufferClass, "<init>", "(JI)V"); if (env->ExceptionCheck()) { env->ExceptionClear(); directBufferSupportInitializeFailed = 1;
< prev index next >