< prev index next >
src/share/vm/prims/whitebox.cpp
Print this page
rev 6864 : 8061651: Interface to the Lookup Index Cache to improve URLClassPath search time
Summary: Implemented the interface in sun.misc.URLClassPath and corresponding JVM_XXX APIs
Reviewed-by: mchung, acorn, jiangli, dholmes
rev 6867 : 8061817: Whitebox.deoptimizeMethod() does not deoptimize all OSR versions of method
Summary: Fixed Whitebox.deoptimizeMethod() to deoptimize all OSR versions of the method.
Reviewed-by: kvn, iignatyev
*** 102,111 ****
--- 102,133 ----
ClassLoaderDataGraph::classes_do(&closure);
return closure.found();
WB_END
+ WB_ENTRY(jboolean, WB_ClassKnownToNotExist(JNIEnv* env, jobject o, jobject loader, jstring name))
+ ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
+ const char* class_name = env->GetStringUTFChars(name, NULL);
+ jboolean result = JVM_KnownToNotExist(env, loader, class_name);
+ env->ReleaseStringUTFChars(name, class_name);
+ return result;
+ WB_END
+
+ WB_ENTRY(jobjectArray, WB_GetLookupCacheURLs(JNIEnv* env, jobject o, jobject loader))
+ ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
+ return JVM_GetResourceLookupCacheURLs(env, loader);
+ WB_END
+
+ WB_ENTRY(jintArray, WB_GetLookupCacheMatches(JNIEnv* env, jobject o, jobject loader, jstring name))
+ ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
+ const char* resource_name = env->GetStringUTFChars(name, NULL);
+ jintArray result = JVM_GetResourceLookupCache(env, loader, resource_name);
+
+ env->ReleaseStringUTFChars(name, resource_name);
+ return result;
+ WB_END
+
WB_ENTRY(jlong, WB_GetCompressedOopsMaxHeapSize(JNIEnv* env, jobject o)) {
return (jlong)Arguments::max_heap_for_compressed_oops();
}
WB_END
*** 380,402 ****
jmethodID jmid = reflected_method_to_jmid(thread, env, method);
int result = 0;
CHECK_JNI_EXCEPTION_(env, result);
MutexLockerEx mu(Compile_lock);
methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
- nmethod* code;
if (is_osr) {
! int bci = InvocationEntryBci;
! while ((code = mh->lookup_osr_nmethod_for(bci, CompLevel_none, false)) != NULL) {
! code->mark_for_deoptimization();
! ++result;
! bci = code->osr_entry_bci() + 1;
! }
! } else {
! code = mh->code();
! }
! if (code != NULL) {
! code->mark_for_deoptimization();
++result;
}
result += CodeCache::mark_for_deoptimization(mh());
if (result > 0) {
VM_Deoptimize op;
--- 402,415 ----
jmethodID jmid = reflected_method_to_jmid(thread, env, method);
int result = 0;
CHECK_JNI_EXCEPTION_(env, result);
MutexLockerEx mu(Compile_lock);
methodHandle mh(THREAD, Method::checked_resolve_jmethod_id(jmid));
if (is_osr) {
! result += mh->mark_osr_nmethods();
! } else if (mh->code() != NULL) {
! mh->code()->mark_for_deoptimization();
++result;
}
result += CodeCache::mark_for_deoptimization(mh());
if (result > 0) {
VM_Deoptimize op;
*** 937,946 ****
--- 950,964 ----
{CC"getObjectAddress", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress },
{CC"getObjectSize", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectSize },
{CC"isObjectInOldGen", CC"(Ljava/lang/Object;)Z", (void*)&WB_isObjectInOldGen },
{CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize },
{CC"isClassAlive0", CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive },
+ {CC"classKnownToNotExist",
+ CC"(Ljava/lang/ClassLoader;Ljava/lang/String;)Z",(void*)&WB_ClassKnownToNotExist},
+ {CC"getLookupCacheURLs", CC"(Ljava/lang/ClassLoader;)[Ljava/net/URL;", (void*)&WB_GetLookupCacheURLs},
+ {CC"getLookupCacheMatches", CC"(Ljava/lang/ClassLoader;Ljava/lang/String;)[I",
+ (void*)&WB_GetLookupCacheMatches},
{CC"parseCommandLine",
CC"(Ljava/lang/String;[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
(void*) &WB_ParseCommandLine
},
{CC"getCompressedOopsMaxHeapSize", CC"()J",
< prev index next >