src/share/vm/prims/whitebox.cpp
Print this page
rev 7885 : 8061715:gc/g1/TestShrinkAuxiliaryData15.java fails
*** 293,302 ****
--- 293,308 ----
oop result = JNIHandles::resolve(obj);
const HeapRegion* hr = g1->heap_region_containing(result);
return hr->is_humongous();
WB_END
+ WB_ENTRY(jlong, WB_G1NumMaxRegions(JNIEnv* env, jobject o))
+ G1CollectedHeap* g1 = G1CollectedHeap::heap();
+ size_t nr = g1->max_regions();
+ return (jlong)nr;
+ WB_END
+
WB_ENTRY(jlong, WB_G1NumFreeRegions(JNIEnv* env, jobject o))
G1CollectedHeap* g1 = G1CollectedHeap::heap();
size_t nr = g1->num_free_regions();
return (jlong)nr;
WB_END
*** 316,325 ****
--- 322,358 ----
WB_END
WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o))
return (jint)HeapRegion::GrainBytes;
WB_END
+
+ WB_ENTRY(jobject, WB_G1AuxiliaryMemoryUsage(JNIEnv* env))
+ ResourceMark rm(THREAD);
+ ThreadToNativeFromVM ttn(thread);
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ MemoryUsage mu = g1h->get_auxiliary_data_memory_usage();
+
+ jclass jclass_memory_usage = env->FindClass("java/lang/management/MemoryUsage");
+ CHECK_JNI_EXCEPTION_(env, NULL);
+ if (jclass_memory_usage == NULL) {
+ THROW_MSG_NULL(vmSymbols::java_lang_NoClassDefFoundError(),
+ "Cannot find class java/lang/management/MemoryUsage.");
+ }
+
+ jmethodID ctor = env->GetMethodID(jclass_memory_usage, "<init>", "(JJJJ)V");
+ CHECK_JNI_EXCEPTION_(env, NULL);
+ if (ctor == NULL) {
+ THROW_MSG_NULL(vmSymbols::java_lang_NoSuchMethodError(),
+ "Cannot find constructor for MemoryUsage(long, long, long, long).");
+ }
+
+ jvalue args[4];
+ args[0].j = 0;
+ args[1].j = mu.used();
+ args[2].j = args[3].j = mu.committed();
+ return env->NewObjectA(jclass_memory_usage, ctor, args);
+ WB_END
#endif // INCLUDE_ALL_GCS
#if INCLUDE_NMT
// Alloc memory using the test memory type so that we can use that to see if
// NMT picks it up correctly
*** 1238,1250 ****
--- 1271,1286 ----
{CC"readFromNoaccessArea",CC"()V", (void*)&WB_ReadFromNoaccessArea},
{CC"stressVirtualSpaceResize",CC"(JJJ)I", (void*)&WB_StressVirtualSpaceResize},
#if INCLUDE_ALL_GCS
{CC"g1InConcurrentMark", CC"()Z", (void*)&WB_G1InConcurrentMark},
{CC"g1IsHumongous", CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous },
+ {CC"g1NumMaxRegions", CC"()J", (void*)&WB_G1NumMaxRegions },
{CC"g1NumFreeRegions", CC"()J", (void*)&WB_G1NumFreeRegions },
{CC"g1RegionSize", CC"()I", (void*)&WB_G1RegionSize },
{CC"g1StartConcMarkCycle", CC"()Z", (void*)&WB_G1StartMarkCycle },
+ {CC"g1AuxiliaryMemoryUsage", CC"()Ljava/lang/management/MemoryUsage;",
+ (void*)&WB_G1AuxiliaryMemoryUsage },
#endif // INCLUDE_ALL_GCS
#if INCLUDE_NMT
{CC"NMTMalloc", CC"(J)J", (void*)&WB_NMTMalloc },
{CC"NMTMallocWithPseudoStack", CC"(JI)J", (void*)&WB_NMTMallocWithPseudoStack},
{CC"NMTFree", CC"(J)V", (void*)&WB_NMTFree },