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