src/share/vm/prims/whitebox.cpp

Print this page

        

*** 114,141 **** return closure.found(); WB_END WB_ENTRY(void, WB_AddToBootstrapClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) { #if INCLUDE_JVMTI ! ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI ! const char* seg = env->GetStringUTFChars(segment, NULL); JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION); jvmtiError err = jvmti_env->AddToBootstrapClassLoaderSearch(seg); assert(err == JVMTI_ERROR_NONE, "must not fail"); env->ReleaseStringUTFChars(segment, seg); #endif } WB_END WB_ENTRY(void, WB_AddToSystemClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) { #if INCLUDE_JVMTI ! ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI ! const char* seg = env->GetStringUTFChars(segment, NULL); JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION); jvmtiError err = jvmti_env->AddToSystemClassLoaderSearch(seg); assert(err == JVMTI_ERROR_NONE, "must not fail"); env->ReleaseStringUTFChars(segment, seg); #endif } WB_END --- 114,153 ---- return closure.found(); WB_END WB_ENTRY(void, WB_AddToBootstrapClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) { #if INCLUDE_JVMTI ! const char* seg; ! { ! ThreadToNativeFromVM ttnfv(thread); ! seg = env->GetStringUTFChars(segment, NULL); ! } JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION); jvmtiError err = jvmti_env->AddToBootstrapClassLoaderSearch(seg); assert(err == JVMTI_ERROR_NONE, "must not fail"); + { + ThreadToNativeFromVM ttnfv(thread); env->ReleaseStringUTFChars(segment, seg); + } #endif } WB_END WB_ENTRY(void, WB_AddToSystemClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) { #if INCLUDE_JVMTI ! const char* seg; ! { ! ThreadToNativeFromVM ttnfv(thread); ! seg = env->GetStringUTFChars(segment, NULL); ! } JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION); jvmtiError err = jvmti_env->AddToSystemClassLoaderSearch(seg); assert(err == JVMTI_ERROR_NONE, "must not fail"); + { + ThreadToNativeFromVM ttnfv(thread); env->ReleaseStringUTFChars(segment, seg); + } #endif } WB_END