Wed, 19 Nov 2014 19:31:13 -0800
8065346: WB_AddToBootstrapClassLoaderSearch calls JvmtiEnv::create_a_jvmti when not in _thread_in_vm state
Summary: Removed ThreadToNativeFromVM and use java_lang_String::as_utf8_string instead
Reviewed-by: dholmes, minqi
src/share/vm/prims/whitebox.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/prims/whitebox.cpp Tue Nov 18 03:38:50 2014 -0800 1.2 +++ b/src/share/vm/prims/whitebox.cpp Wed Nov 19 19:31:13 2014 -0800 1.3 @@ -129,24 +129,22 @@ 1.4 1.5 WB_ENTRY(void, WB_AddToBootstrapClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) { 1.6 #if INCLUDE_JVMTI 1.7 - ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI 1.8 - const char* seg = env->GetStringUTFChars(segment, NULL); 1.9 + ResourceMark rm; 1.10 + const char* seg = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(segment)); 1.11 JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION); 1.12 jvmtiError err = jvmti_env->AddToBootstrapClassLoaderSearch(seg); 1.13 assert(err == JVMTI_ERROR_NONE, "must not fail"); 1.14 - env->ReleaseStringUTFChars(segment, seg); 1.15 #endif 1.16 } 1.17 WB_END 1.18 1.19 WB_ENTRY(void, WB_AddToSystemClassLoaderSearch(JNIEnv* env, jobject o, jstring segment)) { 1.20 #if INCLUDE_JVMTI 1.21 - ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI 1.22 - const char* seg = env->GetStringUTFChars(segment, NULL); 1.23 + ResourceMark rm; 1.24 + const char* seg = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(segment)); 1.25 JvmtiEnv* jvmti_env = JvmtiEnv::create_a_jvmti(JVMTI_VERSION); 1.26 jvmtiError err = jvmti_env->AddToSystemClassLoaderSearch(seg); 1.27 assert(err == JVMTI_ERROR_NONE, "must not fail"); 1.28 - env->ReleaseStringUTFChars(segment, seg); 1.29 #endif 1.30 } 1.31 WB_END