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