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