< prev index next >

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

Print this page

        

*** 258,268 **** } } static jfieldID handleID; static jfieldID jniVersionID; - static jfieldID loadedID; static void *procHandle; static jboolean initIDs(JNIEnv *env) { if (handleID == 0) { --- 258,267 ----
*** 274,286 **** if (handleID == 0) return JNI_FALSE; jniVersionID = (*env)->GetFieldID(env, this, "jniVersion", "I"); if (jniVersionID == 0) return JNI_FALSE; - loadedID = (*env)->GetFieldID(env, this, "loaded", "Z"); - if (loadedID == 0) - return JNI_FALSE; procHandle = getProcessHandle(); } return JNI_TRUE; } --- 273,282 ----
*** 333,360 **** return entryName; } /* * Class: java_lang_ClassLoader_NativeLibrary ! * Method: load ! * Signature: (Ljava/lang/String;Z)V */ ! JNIEXPORT void JNICALL ! Java_java_lang_ClassLoader_00024NativeLibrary_load (JNIEnv *env, jobject this, jstring name, jboolean isBuiltin) { const char *cname; jint jniVersion; jthrowable cause; void * handle; if (!initIDs(env)) ! return; cname = JNU_GetStringPlatformChars(env, name, 0); if (cname == 0) ! return; handle = isBuiltin ? procHandle : JVM_LoadLibrary(cname); if (handle) { JNI_OnLoad_t JNI_OnLoad; JNI_OnLoad = (JNI_OnLoad_t)findJniFunction(env, handle, isBuiltin ? cname : NULL, --- 329,357 ---- return entryName; } /* * Class: java_lang_ClassLoader_NativeLibrary ! * Method: load0 ! * Signature: (Ljava/lang/String;Z)Z */ ! JNIEXPORT jboolean JNICALL ! Java_java_lang_ClassLoader_00024NativeLibrary_load0 (JNIEnv *env, jobject this, jstring name, jboolean isBuiltin) { const char *cname; jint jniVersion; jthrowable cause; void * handle; + jboolean loaded = JNI_FALSE; if (!initIDs(env)) ! return JNI_FALSE; cname = JNU_GetStringPlatformChars(env, name, 0); if (cname == 0) ! return JNI_FALSE; handle = isBuiltin ? procHandle : JVM_LoadLibrary(cname); if (handle) { JNI_OnLoad_t JNI_OnLoad; JNI_OnLoad = (JNI_OnLoad_t)findJniFunction(env, handle, isBuiltin ? cname : NULL,
*** 398,421 **** (*env)->Throw(env, cause); } goto done; } (*env)->SetLongField(env, this, handleID, ptr_to_jlong(handle)); ! (*env)->SetBooleanField(env, this, loadedID, JNI_TRUE); done: JNU_ReleaseStringPlatformChars(env, name, cname); } /* * Class: java_lang_ClassLoader_NativeLibrary * Method: unload ! * Signature: (Z)V */ JNIEXPORT void JNICALL Java_java_lang_ClassLoader_00024NativeLibrary_unload ! (JNIEnv *env, jobject this, jstring name, jboolean isBuiltin) { const char *onUnloadSymbols[] = JNI_ONUNLOAD_SYMBOLS; void *handle; JNI_OnUnload_t JNI_OnUnload; const char *cname; --- 395,419 ---- (*env)->Throw(env, cause); } goto done; } (*env)->SetLongField(env, this, handleID, ptr_to_jlong(handle)); ! loaded = JNI_TRUE; done: JNU_ReleaseStringPlatformChars(env, name, cname); + return loaded; } /* * Class: java_lang_ClassLoader_NativeLibrary * Method: unload ! * Signature: (Ljava/lang/String;ZJ)V */ JNIEXPORT void JNICALL Java_java_lang_ClassLoader_00024NativeLibrary_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;
*** 424,434 **** return; cname = JNU_GetStringPlatformChars(env, name, 0); if (cname == NULL) { return; } ! handle = jlong_to_ptr((*env)->GetLongField(env, this, handleID)); JNI_OnUnload = (JNI_OnUnload_t )findJniFunction(env, handle, isBuiltin ? cname : NULL, JNI_FALSE); if (JNI_OnUnload) { JavaVM *jvm; --- 422,432 ---- return; cname = JNU_GetStringPlatformChars(env, name, 0); if (cname == NULL) { return; } ! handle = jlong_to_ptr(address); JNI_OnUnload = (JNI_OnUnload_t )findJniFunction(env, handle, isBuiltin ? cname : NULL, JNI_FALSE); if (JNI_OnUnload) { JavaVM *jvm;
*** 441,455 **** JNU_ReleaseStringPlatformChars(env, name, cname); } /* * Class: java_lang_ClassLoader_NativeLibrary ! * Method: find * Signature: (Ljava/lang/String;)J */ JNIEXPORT jlong JNICALL ! Java_java_lang_ClassLoader_00024NativeLibrary_find (JNIEnv *env, jobject this, jstring name) { jlong handle; const char *cname; jlong res; --- 439,453 ---- JNU_ReleaseStringPlatformChars(env, name, cname); } /* * Class: java_lang_ClassLoader_NativeLibrary ! * Method: findEntry * Signature: (Ljava/lang/String;)J */ JNIEXPORT jlong JNICALL ! Java_java_lang_ClassLoader_00024NativeLibrary_findEntry (JNIEnv *env, jobject this, jstring name) { jlong handle; const char *cname; jlong res;
< prev index next >