< prev index next >
src/java.base/share/native/libjava/NativeLibraries.c
Print this page
@@ -107,15 +107,15 @@
}
/*
* Class: jdk_internal_loader_NativeLibraries
* Method: load
- * Signature: (Ljava/lang/String;Z)Z
+ * 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)
+ (JNIEnv *env, jobject this, jobject lib, jstring name, jboolean isBuiltin, jboolean isJNI)
{
const char *cname;
jint jniVersion;
jthrowable cause;
void * handle;
@@ -126,10 +126,11 @@
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,10 +172,11 @@
(*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,15 +184,15 @@
}
/*
* Class: jdk_internal_loader_NativeLibraries
* Method: unload
- * Signature: (Ljava/lang/String;ZJ)V
+ * Signature: (Ljava/lang/String;ZZJ)V
*/
JNIEXPORT void JNICALL
Java_jdk_internal_loader_NativeLibraries_unload
-(JNIEnv *env, jclass cls, jstring name, jboolean isBuiltin, jlong address)
+(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,18 +202,20 @@
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,7 +301,5 @@
return lib;
}
free(libName);
return NULL;
}
-
-
< prev index next >