333 return !(hr->is_young());
334 } else if (UseParallelGC) {
335 ParallelScavengeHeap* psh = ParallelScavengeHeap::heap();
336 return !psh->is_in_young(p);
337 }
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 #if INCLUDE_ALL_GCS
354 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
355 G1CollectedHeap* g1 = G1CollectedHeap::heap();
356 oop result = JNIHandles::resolve(obj);
357 const HeapRegion* hr = g1->heap_region_containing(result);
358 return hr->is_humongous();
359 WB_END
360
361 WB_ENTRY(jboolean, WB_G1BelongsToHumongousRegion(JNIEnv* env, jobject o, jlong addr))
362 G1CollectedHeap* g1 = G1CollectedHeap::heap();
363 const HeapRegion* hr = g1->heap_region_containing((void*) addr);
364 return hr->is_humongous();
365 WB_END
366
367 WB_ENTRY(jboolean, WB_G1BelongsToFreeRegion(JNIEnv* env, jobject o, jlong addr))
368 G1CollectedHeap* g1 = G1CollectedHeap::heap();
369 const HeapRegion* hr = g1->heap_region_containing((void*) addr);
370 return hr->is_free();
371 WB_END
372
384
385 WB_ENTRY(jboolean, WB_G1InConcurrentMark(JNIEnv* env, jobject o))
386 G1CollectedHeap* g1h = G1CollectedHeap::heap();
387 return g1h->concurrent_mark()->cmThread()->during_cycle();
388 WB_END
389
390 WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o))
391 G1CollectedHeap* g1h = G1CollectedHeap::heap();
392 if (!g1h->concurrent_mark()->cmThread()->during_cycle()) {
393 g1h->collect(GCCause::_wb_conc_mark);
394 return true;
395 }
396 return false;
397 WB_END
398
399 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o))
400 return (jint)HeapRegion::GrainBytes;
401 WB_END
402
403 WB_ENTRY(jlong, WB_PSVirtualSpaceAlignment(JNIEnv* env, jobject o))
404 ParallelScavengeHeap* ps = ParallelScavengeHeap::heap();
405 size_t alignment = ps->gens()->virtual_spaces()->alignment();
406 return (jlong)alignment;
407 WB_END
408
409 WB_ENTRY(jlong, WB_PSHeapGenerationAlignment(JNIEnv* env, jobject o))
410 size_t alignment = ParallelScavengeHeap::heap()->generation_alignment();
411 return (jlong)alignment;
412 WB_END
413
414 WB_ENTRY(jobject, WB_G1AuxiliaryMemoryUsage(JNIEnv* env))
415 ResourceMark rm(THREAD);
416 G1CollectedHeap* g1h = G1CollectedHeap::heap();
417 MemoryUsage usage = g1h->get_auxiliary_data_memory_usage();
418 Handle h = MemoryService::create_MemoryUsage_obj(usage, CHECK_NULL);
419 return JNIHandles::make_local(env, h());
420 WB_END
421
422 class OldRegionsLivenessClosure: public HeapRegionClosure {
423
424 private:
425 const int _liveness;
426 size_t _total_count;
427 size_t _total_memory;
428 size_t _total_memory_to_free;
429
430 public:
431 OldRegionsLivenessClosure(int liveness) :
1676 ret = 0;
1677 }
1678 return (jint) ret;
1679 WB_END
1680
1681 WB_ENTRY(void, WB_RemoveCompilerDirective(JNIEnv* env, jobject o, jint count))
1682 DirectivesStack::pop(count);
1683 WB_END
1684
1685 #define CC (char*)
1686
1687 static JNINativeMethod methods[] = {
1688 {CC"getObjectAddress0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress },
1689 {CC"getObjectSize0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectSize },
1690 {CC"isObjectInOldGen0", CC"(Ljava/lang/Object;)Z", (void*)&WB_isObjectInOldGen },
1691 {CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize },
1692 {CC"getVMPageSize", CC"()I", (void*)&WB_GetVMPageSize },
1693 {CC"getVMAllocationGranularity", CC"()J", (void*)&WB_GetVMAllocationGranularity },
1694 {CC"getVMLargePageSize", CC"()J", (void*)&WB_GetVMLargePageSize},
1695 {CC"getHeapSpaceAlignment", CC"()J", (void*)&WB_GetHeapSpaceAlignment},
1696 {CC"isClassAlive0", CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive },
1697 {CC"parseCommandLine0",
1698 CC"(Ljava/lang/String;C[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
1699 (void*) &WB_ParseCommandLine
1700 },
1701 {CC"addToBootstrapClassLoaderSearch0", CC"(Ljava/lang/String;)V",
1702 (void*)&WB_AddToBootstrapClassLoaderSearch},
1703 {CC"addToSystemClassLoaderSearch0", CC"(Ljava/lang/String;)V",
1704 (void*)&WB_AddToSystemClassLoaderSearch},
1705 {CC"getCompressedOopsMaxHeapSize", CC"()J",
1706 (void*)&WB_GetCompressedOopsMaxHeapSize},
1707 {CC"printHeapSizes", CC"()V", (void*)&WB_PrintHeapSizes },
1708 {CC"runMemoryUnitTests", CC"()V", (void*)&WB_RunMemoryUnitTests},
1709 {CC"readFromNoaccessArea",CC"()V", (void*)&WB_ReadFromNoaccessArea},
1710 {CC"stressVirtualSpaceResize",CC"(JJJ)I", (void*)&WB_StressVirtualSpaceResize},
1711 #if INCLUDE_ALL_GCS
1712 {CC"g1InConcurrentMark", CC"()Z", (void*)&WB_G1InConcurrentMark},
1713 {CC"g1IsHumongous0", CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous },
1714 {CC"g1BelongsToHumongousRegion0", CC"(J)Z", (void*)&WB_G1BelongsToHumongousRegion},
1715 {CC"g1BelongsToFreeRegion0", CC"(J)Z", (void*)&WB_G1BelongsToFreeRegion},
|
333 return !(hr->is_young());
334 } else if (UseParallelGC) {
335 ParallelScavengeHeap* psh = ParallelScavengeHeap::heap();
336 return !psh->is_in_young(p);
337 }
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
389
390 WB_ENTRY(jboolean, WB_G1InConcurrentMark(JNIEnv* env, jobject o))
391 G1CollectedHeap* g1h = G1CollectedHeap::heap();
392 return g1h->concurrent_mark()->cmThread()->during_cycle();
393 WB_END
394
395 WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o))
396 G1CollectedHeap* g1h = G1CollectedHeap::heap();
397 if (!g1h->concurrent_mark()->cmThread()->during_cycle()) {
398 g1h->collect(GCCause::_wb_conc_mark);
399 return true;
400 }
401 return false;
402 WB_END
403
404 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o))
405 return (jint)HeapRegion::GrainBytes;
406 WB_END
407
408 WB_ENTRY(jlong, WB_PSVirtualSpaceAlignment(JNIEnv* env, jobject o))
409 #if INCLUDE_ALL_GCS
410 if (UseParallelGC) {
411 return ParallelScavengeHeap::heap()->gens()->virtual_spaces()->alignment();
412 }
413 #endif // INCLUDE_ALL_GCS
414 THROW_MSG_0(vmSymbols::java_lang_RuntimeException(), "WB_PSVirtualSpaceAlignment: Parallel GC is not enabled");
415 WB_END
416
417 WB_ENTRY(jlong, WB_PSHeapGenerationAlignment(JNIEnv* env, jobject o))
418 #if INCLUDE_ALL_GCS
419 if (UseParallelGC) {
420 return ParallelScavengeHeap::heap()->generation_alignment();
421 }
422 #endif // INCLUDE_ALL_GCS
423 THROW_MSG_0(vmSymbols::java_lang_RuntimeException(), "WB_PSHeapGenerationAlignment: Parallel GC is not enabled");
424 WB_END
425
426 WB_ENTRY(jobject, WB_G1AuxiliaryMemoryUsage(JNIEnv* env))
427 ResourceMark rm(THREAD);
428 G1CollectedHeap* g1h = G1CollectedHeap::heap();
429 MemoryUsage usage = g1h->get_auxiliary_data_memory_usage();
430 Handle h = MemoryService::create_MemoryUsage_obj(usage, CHECK_NULL);
431 return JNIHandles::make_local(env, h());
432 WB_END
433
434 class OldRegionsLivenessClosure: public HeapRegionClosure {
435
436 private:
437 const int _liveness;
438 size_t _total_count;
439 size_t _total_memory;
440 size_t _total_memory_to_free;
441
442 public:
443 OldRegionsLivenessClosure(int liveness) :
1688 ret = 0;
1689 }
1690 return (jint) ret;
1691 WB_END
1692
1693 WB_ENTRY(void, WB_RemoveCompilerDirective(JNIEnv* env, jobject o, jint count))
1694 DirectivesStack::pop(count);
1695 WB_END
1696
1697 #define CC (char*)
1698
1699 static JNINativeMethod methods[] = {
1700 {CC"getObjectAddress0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress },
1701 {CC"getObjectSize0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectSize },
1702 {CC"isObjectInOldGen0", CC"(Ljava/lang/Object;)Z", (void*)&WB_isObjectInOldGen },
1703 {CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize },
1704 {CC"getVMPageSize", CC"()I", (void*)&WB_GetVMPageSize },
1705 {CC"getVMAllocationGranularity", CC"()J", (void*)&WB_GetVMAllocationGranularity },
1706 {CC"getVMLargePageSize", CC"()J", (void*)&WB_GetVMLargePageSize},
1707 {CC"getHeapSpaceAlignment", CC"()J", (void*)&WB_GetHeapSpaceAlignment},
1708 {CC"getHeapAlignment", CC"()J", (void*)&WB_GetHeapAlignment},
1709 {CC"isClassAlive0", CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive },
1710 {CC"parseCommandLine0",
1711 CC"(Ljava/lang/String;C[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
1712 (void*) &WB_ParseCommandLine
1713 },
1714 {CC"addToBootstrapClassLoaderSearch0", CC"(Ljava/lang/String;)V",
1715 (void*)&WB_AddToBootstrapClassLoaderSearch},
1716 {CC"addToSystemClassLoaderSearch0", CC"(Ljava/lang/String;)V",
1717 (void*)&WB_AddToSystemClassLoaderSearch},
1718 {CC"getCompressedOopsMaxHeapSize", CC"()J",
1719 (void*)&WB_GetCompressedOopsMaxHeapSize},
1720 {CC"printHeapSizes", CC"()V", (void*)&WB_PrintHeapSizes },
1721 {CC"runMemoryUnitTests", CC"()V", (void*)&WB_RunMemoryUnitTests},
1722 {CC"readFromNoaccessArea",CC"()V", (void*)&WB_ReadFromNoaccessArea},
1723 {CC"stressVirtualSpaceResize",CC"(JJJ)I", (void*)&WB_StressVirtualSpaceResize},
1724 #if INCLUDE_ALL_GCS
1725 {CC"g1InConcurrentMark", CC"()Z", (void*)&WB_G1InConcurrentMark},
1726 {CC"g1IsHumongous0", CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous },
1727 {CC"g1BelongsToHumongousRegion0", CC"(J)Z", (void*)&WB_G1BelongsToHumongousRegion},
1728 {CC"g1BelongsToFreeRegion0", CC"(J)Z", (void*)&WB_G1BelongsToFreeRegion},
|