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(jboolean, WB_RequestConcurrentGCPhase(JNIEnv* env, jobject o, jstring name))
363 Handle h_name(THREAD, JNIHandles::resolve(name));
364 ResourceMark rm;
365 const char* c_name = java_lang_String::as_utf8_string(h_name());
366 return Universe::heap()->request_concurrent_phase(c_name);
367 WB_END
368
369 #if INCLUDE_ALL_GCS
370 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
371 G1CollectedHeap* g1 = G1CollectedHeap::heap();
372 oop result = JNIHandles::resolve(obj);
373 const HeapRegion* hr = g1->heap_region_containing(result);
374 return hr->is_humongous();
375 WB_END
376
377 WB_ENTRY(jboolean, WB_G1BelongsToHumongousRegion(JNIEnv* env, jobject o, jlong addr))
378 G1CollectedHeap* g1 = G1CollectedHeap::heap();
379 const HeapRegion* hr = g1->heap_region_containing((void*) addr);
380 return hr->is_humongous();
381 WB_END
382
383 WB_ENTRY(jboolean, WB_G1BelongsToFreeRegion(JNIEnv* env, jobject o, jlong addr))
384 G1CollectedHeap* g1 = G1CollectedHeap::heap();
385 const HeapRegion* hr = g1->heap_region_containing((void*) addr);
386 return hr->is_free();
387 WB_END
388
1899 (void*)&WB_GetMethodIntxOption},
1900 {CC"getMethodUintxOption",
1901 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Long;",
1902 (void*)&WB_GetMethodUintxOption},
1903 {CC"getMethodDoubleOption",
1904 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/Double;",
1905 (void*)&WB_GetMethodDoubleOption},
1906 {CC"getMethodStringOption",
1907 CC"(Ljava/lang/reflect/Executable;Ljava/lang/String;)Ljava/lang/String;",
1908 (void*)&WB_GetMethodStringOption},
1909 {CC"isShared", CC"(Ljava/lang/Object;)Z", (void*)&WB_IsShared },
1910 {CC"isSharedClass", CC"(Ljava/lang/Class;)Z", (void*)&WB_IsSharedClass },
1911 {CC"areSharedStringsIgnored", CC"()Z", (void*)&WB_AreSharedStringsIgnored },
1912 {CC"clearInlineCaches0", CC"(Z)V", (void*)&WB_ClearInlineCaches },
1913 {CC"addCompilerDirective", CC"(Ljava/lang/String;)I",
1914 (void*)&WB_AddCompilerDirective },
1915 {CC"removeCompilerDirective", CC"(I)V", (void*)&WB_RemoveCompilerDirective },
1916 {CC"currentGC", CC"()I", (void*)&WB_CurrentGC},
1917 {CC"allSupportedGC", CC"()I", (void*)&WB_AllSupportedGC},
1918 {CC"gcSelectedByErgo", CC"()Z", (void*)&WB_GCSelectedByErgo},
1919 {CC"supportsConcurrentGCPhaseControl", CC"()Z", (void*)&WB_SupportsConcurrentGCPhaseControl},
1920 {CC"requestConcurrentGCPhase0", CC"(Ljava/lang/String;)Z",
1921 (void*)&WB_RequestConcurrentGCPhase},
1922 };
1923
1924 #undef CC
1925
1926 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass))
1927 {
1928 if (WhiteBoxAPI) {
1929 // Make sure that wbclass is loaded by the null classloader
1930 instanceKlassHandle ikh = instanceKlassHandle(JNIHandles::resolve(wbclass)->klass());
1931 Handle loader(THREAD, ikh->class_loader());
1932 if (loader.is_null()) {
1933 WhiteBox::register_methods(env, wbclass, thread, methods, sizeof(methods) / sizeof(methods[0]));
1934 WhiteBox::register_extended(env, wbclass, thread);
1935 WhiteBox::set_used();
1936 }
1937 }
1938 }
1939 JVM_END
|