< prev index next >

src/share/vm/prims/whitebox.cpp

Print this page
rev 12504 : [mq]: whitebox
rev 12506 : [mq]: list_phases


 338 #endif // INCLUDE_ALL_GCS
 339   GenCollectedHeap* gch = GenCollectedHeap::heap();
 340   return !gch->is_in_young(p);
 341 WB_END
 342 
 343 WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj))
 344   oop p = JNIHandles::resolve(obj);
 345   return p->size() * HeapWordSize;
 346 WB_END
 347 
 348 WB_ENTRY(jlong, WB_GetHeapSpaceAlignment(JNIEnv* env, jobject o))
 349   size_t alignment = Universe::heap()->collector_policy()->space_alignment();
 350   return (jlong)alignment;
 351 WB_END
 352 
 353 WB_ENTRY(jlong, WB_GetHeapAlignment(JNIEnv* env, jobject o))
 354   size_t alignment = Universe::heap()->collector_policy()->heap_alignment();
 355   return (jlong)alignment;
 356 WB_END
 357 





































 358 #if INCLUDE_ALL_GCS
 359 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
 360   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 361   oop result = JNIHandles::resolve(obj);
 362   const HeapRegion* hr = g1->heap_region_containing(result);
 363   return hr->is_humongous();
 364 WB_END
 365 
 366 WB_ENTRY(jboolean, WB_G1BelongsToHumongousRegion(JNIEnv* env, jobject o, jlong addr))
 367   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 368   const HeapRegion* hr = g1->heap_region_containing((void*) addr);
 369   return hr->is_humongous();
 370 WB_END
 371 
 372 WB_ENTRY(jboolean, WB_G1BelongsToFreeRegion(JNIEnv* env, jobject o, jlong addr))
 373   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 374   const HeapRegion* hr = g1->heap_region_containing((void*) addr);
 375   return hr->is_free();
 376 WB_END
 377 


1888                                                       (void*)&WB_GetMethodIntxOption},
1889   {CC"getMethodUintxOption",
1890       CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Long;",
1891                                                       (void*)&WB_GetMethodUintxOption},
1892   {CC"getMethodDoubleOption",
1893       CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Double;",
1894                                                       (void*)&WB_GetMethodDoubleOption},
1895   {CC"getMethodStringOption",
1896       CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/String;",
1897                                                       (void*)&WB_GetMethodStringOption},
1898   {CC"isShared",           CC"(Ljava/lang/Object;)Z", (void*)&WB_IsShared },
1899   {CC"isSharedClass",      CC"(Ljava/lang/Class;)Z",  (void*)&WB_IsSharedClass },
1900   {CC"areSharedStringsIgnored",           CC"()Z",    (void*)&WB_AreSharedStringsIgnored },
1901   {CC"clearInlineCaches0",  CC"(Z)V",                 (void*)&WB_ClearInlineCaches },
1902   {CC"addCompilerDirective",    CC"(Ljava/lang/String;)I",
1903                                                       (void*)&WB_AddCompilerDirective },
1904   {CC"removeCompilerDirective",   CC"(I)V",             (void*)&WB_RemoveCompilerDirective },
1905   {CC"currentGC",                 CC"()I",            (void*)&WB_CurrentGC},
1906   {CC"allSupportedGC",            CC"()I",            (void*)&WB_AllSupportedGC},
1907   {CC"gcSelectedByErgo",          CC"()Z",            (void*)&WB_GCSelectedByErgo},





1908 };
1909 
1910 #undef CC
1911 
1912 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass))
1913   {
1914     if (WhiteBoxAPI) {
1915       // Make sure that wbclass is loaded by the null classloader
1916       instanceKlassHandle ikh = instanceKlassHandle(JNIHandles::resolve(wbclass)->klass());
1917       Handle loader(THREAD, ikh->class_loader());
1918       if (loader.is_null()) {
1919         WhiteBox::register_methods(env, wbclass, thread, methods, sizeof(methods) / sizeof(methods[0]));
1920         WhiteBox::register_extended(env, wbclass, thread);
1921         WhiteBox::set_used();
1922       }
1923     }
1924   }
1925 JVM_END


 338 #endif // INCLUDE_ALL_GCS
 339   GenCollectedHeap* gch = GenCollectedHeap::heap();
 340   return !gch->is_in_young(p);
 341 WB_END
 342 
 343 WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj))
 344   oop p = JNIHandles::resolve(obj);
 345   return p->size() * HeapWordSize;
 346 WB_END
 347 
 348 WB_ENTRY(jlong, WB_GetHeapSpaceAlignment(JNIEnv* env, jobject o))
 349   size_t alignment = Universe::heap()->collector_policy()->space_alignment();
 350   return (jlong)alignment;
 351 WB_END
 352 
 353 WB_ENTRY(jlong, WB_GetHeapAlignment(JNIEnv* env, jobject o))
 354   size_t alignment = Universe::heap()->collector_policy()->heap_alignment();
 355   return (jlong)alignment;
 356 WB_END
 357 
 358 WB_ENTRY(jboolean, WB_SupportsConcurrentGCPhaseControl(JNIEnv* env, jobject o))
 359   return Universe::heap()->supports_concurrent_phase_control();
 360 WB_END
 361 
 362 WB_ENTRY(jobjectArray, WB_GetConcurrentGCPhases(JNIEnv* env, jobject o))
 363   const char* const* phases = Universe::heap()->concurrent_phases();
 364   jint nphases = 0;
 365   for ( ; phases[nphases] != NULL; ++nphases) ;
 366 
 367   ResourceMark rm(thread);
 368   ThreadToNativeFromVM ttn(thread);
 369   jclass clazz = env->FindClass(vmSymbols::java_lang_Object()->as_C_string());
 370   CHECK_JNI_EXCEPTION_(env, NULL);
 371 
 372   jobjectArray result = env->NewObjectArray(nphases, clazz, NULL);
 373   CHECK_JNI_EXCEPTION_(env, NULL);
 374 
 375   // If push fails, return with pending exception.
 376   if (env->PushLocalFrame(nphases) < 0) return NULL;
 377   for (jint i = 0; i < nphases; ++i) {
 378     jstring phase = env->NewStringUTF(phases[i]);
 379     CHECK_JNI_EXCEPTION_(env, NULL);
 380     env->SetObjectArrayElement(result, i, phase);
 381     CHECK_JNI_EXCEPTION_(env, NULL);
 382   }
 383   env->PopLocalFrame(NULL);
 384 
 385   return result;
 386 WB_END
 387 
 388 WB_ENTRY(jboolean, WB_RequestConcurrentGCPhase(JNIEnv* env, jobject o, jstring name))
 389   Handle h_name(THREAD, JNIHandles::resolve(name));
 390   ResourceMark rm;
 391   const char* c_name = java_lang_String::as_utf8_string(h_name());
 392   return Universe::heap()->request_concurrent_phase(c_name);
 393 WB_END
 394 
 395 #if INCLUDE_ALL_GCS
 396 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
 397   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 398   oop result = JNIHandles::resolve(obj);
 399   const HeapRegion* hr = g1->heap_region_containing(result);
 400   return hr->is_humongous();
 401 WB_END
 402 
 403 WB_ENTRY(jboolean, WB_G1BelongsToHumongousRegion(JNIEnv* env, jobject o, jlong addr))
 404   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 405   const HeapRegion* hr = g1->heap_region_containing((void*) addr);
 406   return hr->is_humongous();
 407 WB_END
 408 
 409 WB_ENTRY(jboolean, WB_G1BelongsToFreeRegion(JNIEnv* env, jobject o, jlong addr))
 410   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 411   const HeapRegion* hr = g1->heap_region_containing((void*) addr);
 412   return hr->is_free();
 413 WB_END
 414 


1925                                                       (void*)&WB_GetMethodIntxOption},
1926   {CC"getMethodUintxOption",
1927       CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Long;",
1928                                                       (void*)&WB_GetMethodUintxOption},
1929   {CC"getMethodDoubleOption",
1930       CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Double;",
1931                                                       (void*)&WB_GetMethodDoubleOption},
1932   {CC"getMethodStringOption",
1933       CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/String;",
1934                                                       (void*)&WB_GetMethodStringOption},
1935   {CC"isShared",           CC"(Ljava/lang/Object;)Z", (void*)&WB_IsShared },
1936   {CC"isSharedClass",      CC"(Ljava/lang/Class;)Z",  (void*)&WB_IsSharedClass },
1937   {CC"areSharedStringsIgnored",           CC"()Z",    (void*)&WB_AreSharedStringsIgnored },
1938   {CC"clearInlineCaches0",  CC"(Z)V",                 (void*)&WB_ClearInlineCaches },
1939   {CC"addCompilerDirective",    CC"(Ljava/lang/String;)I",
1940                                                       (void*)&WB_AddCompilerDirective },
1941   {CC"removeCompilerDirective",   CC"(I)V",             (void*)&WB_RemoveCompilerDirective },
1942   {CC"currentGC",                 CC"()I",            (void*)&WB_CurrentGC},
1943   {CC"allSupportedGC",            CC"()I",            (void*)&WB_AllSupportedGC},
1944   {CC"gcSelectedByErgo",          CC"()Z",            (void*)&WB_GCSelectedByErgo},
1945   {CC"supportsConcurrentGCPhaseControl", CC"()Z",     (void*)&WB_SupportsConcurrentGCPhaseControl},
1946   {CC"getConcurrentGCPhases",     CC"()[Ljava/lang/String;",
1947                                                       (void*)&WB_GetConcurrentGCPhases},
1948   {CC"requestConcurrentGCPhase0", CC"(Ljava/lang/String;)Z",
1949                                                       (void*)&WB_RequestConcurrentGCPhase},
1950 };
1951 
1952 #undef CC
1953 
1954 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass))
1955   {
1956     if (WhiteBoxAPI) {
1957       // Make sure that wbclass is loaded by the null classloader
1958       instanceKlassHandle ikh = instanceKlassHandle(JNIHandles::resolve(wbclass)->klass());
1959       Handle loader(THREAD, ikh->class_loader());
1960       if (loader.is_null()) {
1961         WhiteBox::register_methods(env, wbclass, thread, methods, sizeof(methods) / sizeof(methods[0]));
1962         WhiteBox::register_extended(env, wbclass, thread);
1963         WhiteBox::set_used();
1964       }
1965     }
1966   }
1967 JVM_END
< prev index next >