8065346: WB_AddToBootstrapClassLoaderSearch calls JvmtiEnv::create_a_jvmti when not in _thread_in_vm state

Wed, 19 Nov 2014 19:31:13 -0800

author
iklam
date
Wed, 19 Nov 2014 19:31:13 -0800
changeset 7382
c80ddae00f51
parent 7381
887a7cedb892
child 7383
e194d26c9f4e

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

mercurial