< 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,10 +102,32 @@
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,23 +402,14 @@
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 += 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,10 +950,15 @@
{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 >