src/share/vm/prims/whitebox.cpp

Print this page
rev 7970 : 8061715: gc/g1/TestShrinkAuxiliaryData15.java fails
Summary: added WhiteBox methods to count regions and exact aux data sizes
Reviewed-by:


 278     return !psh->is_in_young(p);
 279   }
 280 #endif // INCLUDE_ALL_GCS
 281   GenCollectedHeap* gch = GenCollectedHeap::heap();
 282   return !gch->is_in_young(p);
 283 WB_END
 284 
 285 WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj))
 286   oop p = JNIHandles::resolve(obj);
 287   return p->size() * HeapWordSize;
 288 WB_END
 289 
 290 #if INCLUDE_ALL_GCS
 291 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
 292   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 293   oop result = JNIHandles::resolve(obj);
 294   const HeapRegion* hr = g1->heap_region_containing(result);
 295   return hr->is_humongous();
 296 WB_END
 297 






 298 WB_ENTRY(jlong, WB_G1NumFreeRegions(JNIEnv* env, jobject o))
 299   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 300   size_t nr = g1->num_free_regions();
 301   return (jlong)nr;
 302 WB_END
 303 
 304 WB_ENTRY(jboolean, WB_G1InConcurrentMark(JNIEnv* env, jobject o))
 305   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 306   return g1->concurrent_mark()->cmThread()->during_cycle();
 307 WB_END
 308 
 309 WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o))
 310   G1CollectedHeap* g1h = G1CollectedHeap::heap();
 311   if (!g1h->concurrent_mark()->cmThread()->during_cycle()) {
 312     g1h->collect(GCCause::_wb_conc_mark);
 313     return true;
 314   }
 315   return false;
 316 WB_END
 317 
 318 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o))
 319   return (jint)HeapRegion::GrainBytes;
 320 WB_END








 321 #endif // INCLUDE_ALL_GCS
 322 
 323 #if INCLUDE_NMT
 324 // Alloc memory using the test memory type so that we can use that to see if
 325 // NMT picks it up correctly
 326 WB_ENTRY(jlong, WB_NMTMalloc(JNIEnv* env, jobject o, jlong size))
 327   jlong addr = 0;
 328   addr = (jlong)(uintptr_t)os::malloc(size, mtTest);
 329   return addr;
 330 WB_END
 331 
 332 // Alloc memory with pseudo call stack. The test can create psudo malloc
 333 // allocation site to stress the malloc tracking.
 334 WB_ENTRY(jlong, WB_NMTMallocWithPseudoStack(JNIEnv* env, jobject o, jlong size, jint pseudo_stack))
 335   address pc = (address)(size_t)pseudo_stack;
 336   NativeCallStack stack(&pc, 1);
 337   return (jlong)(uintptr_t)os::malloc(size, mtTest, stack);
 338 WB_END
 339 
 340 // Free the memory allocated by NMTAllocTest


1223   {CC"getHeapOopSize",     CC"()I",                   (void*)&WB_GetHeapOopSize    },
1224   {CC"getVMPageSize",      CC"()I",                   (void*)&WB_GetVMPageSize     },
1225   {CC"isClassAlive0",      CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive      },
1226   {CC"parseCommandLine",
1227       CC"(Ljava/lang/String;C[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
1228       (void*) &WB_ParseCommandLine
1229   },
1230   {CC"addToBootstrapClassLoaderSearch", CC"(Ljava/lang/String;)V",
1231                                                       (void*)&WB_AddToBootstrapClassLoaderSearch},
1232   {CC"addToSystemClassLoaderSearch",    CC"(Ljava/lang/String;)V",
1233                                                       (void*)&WB_AddToSystemClassLoaderSearch},
1234   {CC"getCompressedOopsMaxHeapSize", CC"()J",
1235       (void*)&WB_GetCompressedOopsMaxHeapSize},
1236   {CC"printHeapSizes",     CC"()V",                   (void*)&WB_PrintHeapSizes    },
1237   {CC"runMemoryUnitTests", CC"()V",                   (void*)&WB_RunMemoryUnitTests},
1238   {CC"readFromNoaccessArea",CC"()V",                  (void*)&WB_ReadFromNoaccessArea},
1239   {CC"stressVirtualSpaceResize",CC"(JJJ)I",           (void*)&WB_StressVirtualSpaceResize},
1240 #if INCLUDE_ALL_GCS
1241   {CC"g1InConcurrentMark", CC"()Z",                   (void*)&WB_G1InConcurrentMark},
1242   {CC"g1IsHumongous",      CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous     },

1243   {CC"g1NumFreeRegions",   CC"()J",                   (void*)&WB_G1NumFreeRegions  },
1244   {CC"g1RegionSize",       CC"()I",                   (void*)&WB_G1RegionSize      },
1245   {CC"g1StartConcMarkCycle",       CC"()Z",           (void*)&WB_G1StartMarkCycle  },


1246 #endif // INCLUDE_ALL_GCS
1247 #if INCLUDE_NMT
1248   {CC"NMTMalloc",           CC"(J)J",                 (void*)&WB_NMTMalloc          },
1249   {CC"NMTMallocWithPseudoStack", CC"(JI)J",           (void*)&WB_NMTMallocWithPseudoStack},
1250   {CC"NMTFree",             CC"(J)V",                 (void*)&WB_NMTFree            },
1251   {CC"NMTReserveMemory",    CC"(J)J",                 (void*)&WB_NMTReserveMemory   },
1252   {CC"NMTCommitMemory",     CC"(JJ)V",                (void*)&WB_NMTCommitMemory    },
1253   {CC"NMTUncommitMemory",   CC"(JJ)V",                (void*)&WB_NMTUncommitMemory  },
1254   {CC"NMTReleaseMemory",    CC"(JJ)V",                (void*)&WB_NMTReleaseMemory   },
1255   {CC"NMTIsDetailSupported",CC"()Z",                  (void*)&WB_NMTIsDetailSupported},
1256   {CC"NMTChangeTrackingLevel", CC"()Z",               (void*)&WB_NMTChangeTrackingLevel},
1257   {CC"NMTGetHashSize",      CC"()I",                  (void*)&WB_NMTGetHashSize     },
1258 #endif // INCLUDE_NMT
1259   {CC"deoptimizeFrames",   CC"(Z)I",                  (void*)&WB_DeoptimizeFrames  },
1260   {CC"deoptimizeAll",      CC"()V",                   (void*)&WB_DeoptimizeAll     },
1261   {CC"deoptimizeMethod",   CC"(Ljava/lang/reflect/Executable;Z)I",
1262                                                       (void*)&WB_DeoptimizeMethod  },
1263   {CC"isMethodCompiled",   CC"(Ljava/lang/reflect/Executable;Z)Z",
1264                                                       (void*)&WB_IsMethodCompiled  },
1265   {CC"isMethodCompilable", CC"(Ljava/lang/reflect/Executable;IZ)Z",




 278     return !psh->is_in_young(p);
 279   }
 280 #endif // INCLUDE_ALL_GCS
 281   GenCollectedHeap* gch = GenCollectedHeap::heap();
 282   return !gch->is_in_young(p);
 283 WB_END
 284 
 285 WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj))
 286   oop p = JNIHandles::resolve(obj);
 287   return p->size() * HeapWordSize;
 288 WB_END
 289 
 290 #if INCLUDE_ALL_GCS
 291 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
 292   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 293   oop result = JNIHandles::resolve(obj);
 294   const HeapRegion* hr = g1->heap_region_containing(result);
 295   return hr->is_humongous();
 296 WB_END
 297 
 298 WB_ENTRY(jlong, WB_G1NumMaxRegions(JNIEnv* env, jobject o))
 299   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 300   size_t nr = g1->max_regions();
 301   return (jlong)nr;
 302 WB_END
 303 
 304 WB_ENTRY(jlong, WB_G1NumFreeRegions(JNIEnv* env, jobject o))
 305   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 306   size_t nr = g1->num_free_regions();
 307   return (jlong)nr;
 308 WB_END
 309 
 310 WB_ENTRY(jboolean, WB_G1InConcurrentMark(JNIEnv* env, jobject o))
 311   G1CollectedHeap* g1 = G1CollectedHeap::heap();
 312   return g1->concurrent_mark()->cmThread()->during_cycle();
 313 WB_END
 314 
 315 WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o))
 316   G1CollectedHeap* g1h = G1CollectedHeap::heap();
 317   if (!g1h->concurrent_mark()->cmThread()->during_cycle()) {
 318     g1h->collect(GCCause::_wb_conc_mark);
 319     return true;
 320   }
 321   return false;
 322 WB_END
 323 
 324 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o))
 325   return (jint)HeapRegion::GrainBytes;
 326 WB_END
 327 
 328 WB_ENTRY(jobject, WB_G1AuxiliaryMemoryUsage(JNIEnv* env))
 329   ResourceMark rm(THREAD);
 330   G1CollectedHeap* g1h = G1CollectedHeap::heap();
 331   MemoryUsage usage = g1h->get_auxiliary_data_memory_usage();
 332   Handle h = MemoryService::create_MemoryUsage_obj(usage, CHECK_NULL);
 333   return JNIHandles::make_local(env, h());
 334 WB_END
 335 #endif // INCLUDE_ALL_GCS
 336 
 337 #if INCLUDE_NMT
 338 // Alloc memory using the test memory type so that we can use that to see if
 339 // NMT picks it up correctly
 340 WB_ENTRY(jlong, WB_NMTMalloc(JNIEnv* env, jobject o, jlong size))
 341   jlong addr = 0;
 342   addr = (jlong)(uintptr_t)os::malloc(size, mtTest);
 343   return addr;
 344 WB_END
 345 
 346 // Alloc memory with pseudo call stack. The test can create psudo malloc
 347 // allocation site to stress the malloc tracking.
 348 WB_ENTRY(jlong, WB_NMTMallocWithPseudoStack(JNIEnv* env, jobject o, jlong size, jint pseudo_stack))
 349   address pc = (address)(size_t)pseudo_stack;
 350   NativeCallStack stack(&pc, 1);
 351   return (jlong)(uintptr_t)os::malloc(size, mtTest, stack);
 352 WB_END
 353 
 354 // Free the memory allocated by NMTAllocTest


1237   {CC"getHeapOopSize",     CC"()I",                   (void*)&WB_GetHeapOopSize    },
1238   {CC"getVMPageSize",      CC"()I",                   (void*)&WB_GetVMPageSize     },
1239   {CC"isClassAlive0",      CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive      },
1240   {CC"parseCommandLine",
1241       CC"(Ljava/lang/String;C[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
1242       (void*) &WB_ParseCommandLine
1243   },
1244   {CC"addToBootstrapClassLoaderSearch", CC"(Ljava/lang/String;)V",
1245                                                       (void*)&WB_AddToBootstrapClassLoaderSearch},
1246   {CC"addToSystemClassLoaderSearch",    CC"(Ljava/lang/String;)V",
1247                                                       (void*)&WB_AddToSystemClassLoaderSearch},
1248   {CC"getCompressedOopsMaxHeapSize", CC"()J",
1249       (void*)&WB_GetCompressedOopsMaxHeapSize},
1250   {CC"printHeapSizes",     CC"()V",                   (void*)&WB_PrintHeapSizes    },
1251   {CC"runMemoryUnitTests", CC"()V",                   (void*)&WB_RunMemoryUnitTests},
1252   {CC"readFromNoaccessArea",CC"()V",                  (void*)&WB_ReadFromNoaccessArea},
1253   {CC"stressVirtualSpaceResize",CC"(JJJ)I",           (void*)&WB_StressVirtualSpaceResize},
1254 #if INCLUDE_ALL_GCS
1255   {CC"g1InConcurrentMark", CC"()Z",                   (void*)&WB_G1InConcurrentMark},
1256   {CC"g1IsHumongous",      CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous     },
1257   {CC"g1NumMaxRegions",    CC"()J",                   (void*)&WB_G1NumMaxRegions  },
1258   {CC"g1NumFreeRegions",   CC"()J",                   (void*)&WB_G1NumFreeRegions  },
1259   {CC"g1RegionSize",       CC"()I",                   (void*)&WB_G1RegionSize      },
1260   {CC"g1StartConcMarkCycle",       CC"()Z",           (void*)&WB_G1StartMarkCycle  },
1261   {CC"g1AuxiliaryMemoryUsage", CC"()Ljava/lang/management/MemoryUsage;",
1262                                                       (void*)&WB_G1AuxiliaryMemoryUsage  },
1263 #endif // INCLUDE_ALL_GCS
1264 #if INCLUDE_NMT
1265   {CC"NMTMalloc",           CC"(J)J",                 (void*)&WB_NMTMalloc          },
1266   {CC"NMTMallocWithPseudoStack", CC"(JI)J",           (void*)&WB_NMTMallocWithPseudoStack},
1267   {CC"NMTFree",             CC"(J)V",                 (void*)&WB_NMTFree            },
1268   {CC"NMTReserveMemory",    CC"(J)J",                 (void*)&WB_NMTReserveMemory   },
1269   {CC"NMTCommitMemory",     CC"(JJ)V",                (void*)&WB_NMTCommitMemory    },
1270   {CC"NMTUncommitMemory",   CC"(JJ)V",                (void*)&WB_NMTUncommitMemory  },
1271   {CC"NMTReleaseMemory",    CC"(JJ)V",                (void*)&WB_NMTReleaseMemory   },
1272   {CC"NMTIsDetailSupported",CC"()Z",                  (void*)&WB_NMTIsDetailSupported},
1273   {CC"NMTChangeTrackingLevel", CC"()Z",               (void*)&WB_NMTChangeTrackingLevel},
1274   {CC"NMTGetHashSize",      CC"()I",                  (void*)&WB_NMTGetHashSize     },
1275 #endif // INCLUDE_NMT
1276   {CC"deoptimizeFrames",   CC"(Z)I",                  (void*)&WB_DeoptimizeFrames  },
1277   {CC"deoptimizeAll",      CC"()V",                   (void*)&WB_DeoptimizeAll     },
1278   {CC"deoptimizeMethod",   CC"(Ljava/lang/reflect/Executable;Z)I",
1279                                                       (void*)&WB_DeoptimizeMethod  },
1280   {CC"isMethodCompiled",   CC"(Ljava/lang/reflect/Executable;Z)Z",
1281                                                       (void*)&WB_IsMethodCompiled  },
1282   {CC"isMethodCompilable", CC"(Ljava/lang/reflect/Executable;IZ)Z",