< prev index next >

src/java.base/share/native/libjava/NativeLibraries.c

Print this page

        

*** 107,121 **** } /* * Class: jdk_internal_loader_NativeLibraries * Method: load ! * Signature: (Ljava/lang/String;Z)Z */ JNIEXPORT jboolean JNICALL Java_jdk_internal_loader_NativeLibraries_load ! (JNIEnv *env, jobject this, jobject lib, jstring name, jboolean isBuiltin) { const char *cname; jint jniVersion; jthrowable cause; void * handle; --- 107,121 ---- } /* * Class: jdk_internal_loader_NativeLibraries * Method: load ! * Signature: (Ljava/lang/String;ZZ)Z */ JNIEXPORT jboolean JNICALL Java_jdk_internal_loader_NativeLibraries_load ! (JNIEnv *env, jobject this, jobject lib, jstring name, jboolean isBuiltin, jboolean isJNI) { const char *cname; jint jniVersion; jthrowable cause; void * handle;
*** 126,135 **** --- 126,136 ---- cname = JNU_GetStringPlatformChars(env, name, 0); if (cname == 0) return JNI_FALSE; handle = isBuiltin ? procHandle : JVM_LoadLibrary(cname); + if (isJNI) { if (handle) { JNI_OnLoad_t JNI_OnLoad; JNI_OnLoad = (JNI_OnLoad_t)findJniFunction(env, handle, isBuiltin ? cname : NULL, JNI_TRUE);
*** 171,180 **** --- 172,182 ---- (*env)->SetLongField(env, lib, handleID, (jlong)0); (*env)->Throw(env, cause); } goto done; } + } (*env)->SetLongField(env, lib, handleID, ptr_to_jlong(handle)); loaded = JNI_TRUE; done: JNU_ReleaseStringPlatformChars(env, name, cname);
*** 182,196 **** } /* * Class: jdk_internal_loader_NativeLibraries * Method: unload ! * Signature: (Ljava/lang/String;ZJ)V */ JNIEXPORT void JNICALL Java_jdk_internal_loader_NativeLibraries_unload ! (JNIEnv *env, jclass cls, jstring name, jboolean isBuiltin, jlong address) { const char *onUnloadSymbols[] = JNI_ONUNLOAD_SYMBOLS; void *handle; JNI_OnUnload_t JNI_OnUnload; const char *cname; --- 184,198 ---- } /* * Class: jdk_internal_loader_NativeLibraries * Method: unload ! * Signature: (Ljava/lang/String;ZZJ)V */ JNIEXPORT void JNICALL Java_jdk_internal_loader_NativeLibraries_unload ! (JNIEnv *env, jclass cls, jstring name, jboolean isBuiltin, jboolean isJNI, jlong address) { const char *onUnloadSymbols[] = JNI_ONUNLOAD_SYMBOLS; void *handle; JNI_OnUnload_t JNI_OnUnload; const char *cname;
*** 200,217 **** --- 202,221 ---- cname = JNU_GetStringPlatformChars(env, name, 0); if (cname == NULL) { return; } handle = jlong_to_ptr(address); + if (isJNI) { JNI_OnUnload = (JNI_OnUnload_t )findJniFunction(env, handle, isBuiltin ? cname : NULL, JNI_FALSE); if (JNI_OnUnload) { JavaVM *jvm; (*env)->GetJavaVM(env, &jvm); (*JNI_OnUnload)(jvm, NULL); } + } if (!isBuiltin) { JVM_UnloadLibrary(handle); } JNU_ReleaseStringPlatformChars(env, name, cname); }
*** 297,303 **** return lib; } free(libName); return NULL; } - - --- 301,305 ----
< prev index next >