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