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 },