65 #include "runtime/jniHandles.inline.hpp"
66 #include "runtime/os.hpp"
67 #include "runtime/sweeper.hpp"
68 #include "runtime/thread.hpp"
69 #include "runtime/threadSMR.hpp"
70 #include "runtime/vm_version.hpp"
71 #include "services/memoryService.hpp"
72 #include "utilities/align.hpp"
73 #include "utilities/debug.hpp"
74 #include "utilities/elfFile.hpp"
75 #include "utilities/exceptions.hpp"
76 #include "utilities/macros.hpp"
77 #if INCLUDE_CDS
78 #include "prims/cdsoffsets.hpp"
79 #endif // INCLUDE_CDS
80 #if INCLUDE_G1GC
81 #include "gc/g1/g1CollectedHeap.inline.hpp"
82 #include "gc/g1/g1ConcurrentMark.hpp"
83 #include "gc/g1/g1ConcurrentMarkThread.hpp"
84 #include "gc/g1/heapRegionRemSet.hpp"
85 #endif // INCLUDE_G1GC
86 #if INCLUDE_PARALLELGC
87 #include "gc/parallel/parallelScavengeHeap.inline.hpp"
88 #include "gc/parallel/adjoiningGenerations.hpp"
89 #endif // INCLUDE_PARALLELGC
90 #if INCLUDE_NMT
91 #include "services/mallocSiteTable.hpp"
92 #include "services/memTracker.hpp"
93 #include "utilities/nativeCallStack.hpp"
94 #endif // INCLUDE_NMT
95
96 #ifdef LINUX
97 #include "osContainer_linux.hpp"
98 #endif
99
100 #define SIZE_T_MAX_VALUE ((size_t) -1)
101
102 #define CHECK_JNI_EXCEPTION_(env, value) \
103 do { \
104 JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \
353 return false;
354 }
355 return !(hr->is_young());
356 }
357 #endif
358 #if INCLUDE_PARALLELGC
359 if (UseParallelGC) {
360 ParallelScavengeHeap* psh = ParallelScavengeHeap::heap();
361 return !psh->is_in_young(p);
362 }
363 #endif
364 #if INCLUDE_ZGC
365 if (UseZGC) {
366 return Universe::heap()->is_in(p);
367 }
368 #endif
369 GenCollectedHeap* gch = GenCollectedHeap::heap();
370 return !gch->is_in_young(p);
371 WB_END
372
373 WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj))
374 oop p = JNIHandles::resolve(obj);
375 return Universe::heap()->obj_size(p) * HeapWordSize;
376 WB_END
377
378 WB_ENTRY(jlong, WB_GetHeapSpaceAlignment(JNIEnv* env, jobject o))
379 size_t alignment = Universe::heap()->collector_policy()->space_alignment();
380 return (jlong)alignment;
381 WB_END
382
383 WB_ENTRY(jlong, WB_GetHeapAlignment(JNIEnv* env, jobject o))
384 size_t alignment = Universe::heap()->collector_policy()->heap_alignment();
385 return (jlong)alignment;
386 WB_END
387
388 WB_ENTRY(jboolean, WB_SupportsConcurrentGCPhaseControl(JNIEnv* env, jobject o))
389 return Universe::heap()->supports_concurrent_phase_control();
390 WB_END
391
392 WB_ENTRY(jobjectArray, WB_GetConcurrentGCPhases(JNIEnv* env, jobject o))
480
481 WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o))
482 if (UseG1GC) {
483 G1CollectedHeap* g1h = G1CollectedHeap::heap();
484 if (!g1h->concurrent_mark()->cm_thread()->during_cycle()) {
485 g1h->collect(GCCause::_wb_conc_mark);
486 return true;
487 }
488 return false;
489 }
490 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1StartMarkCycle: G1 GC is not enabled");
491 WB_END
492
493 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o))
494 if (UseG1GC) {
495 return (jint)HeapRegion::GrainBytes;
496 }
497 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1RegionSize: G1 GC is not enabled");
498 WB_END
499
500 #endif // INCLUDE_G1GC
501
502 #if INCLUDE_PARALLELGC
503
504 WB_ENTRY(jlong, WB_PSVirtualSpaceAlignment(JNIEnv* env, jobject o))
505 if (UseParallelGC) {
506 return ParallelScavengeHeap::heap()->gens()->virtual_spaces()->alignment();
507 }
508 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_PSVirtualSpaceAlignment: Parallel GC is not enabled");
509 WB_END
510
511 WB_ENTRY(jlong, WB_PSHeapGenerationAlignment(JNIEnv* env, jobject o))
512 if (UseParallelGC) {
513 return ParallelScavengeHeap::heap()->generation_alignment();
514 }
515 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_PSHeapGenerationAlignment: Parallel GC is not enabled");
516 WB_END
517
518 #endif // INCLUDE_PARALLELGC
519
1998 // Elf decoder
1999 WB_ENTRY(void, WB_DisableElfSectionCache(JNIEnv* env))
2000 #if !defined(_WINDOWS) && !defined(__APPLE__) && !defined(_AIX)
2001 ElfFile::_do_not_cache_elf_section = true;
2002 #endif
2003 WB_END
2004
2005 WB_ENTRY(jint, WB_ResolvedMethodRemovedCount(JNIEnv* env, jobject o))
2006 return (jint) ResolvedMethodTable::removed_entries_count();
2007 WB_END
2008
2009 WB_ENTRY(jint, WB_ProtectionDomainRemovedCount(JNIEnv* env, jobject o))
2010 return (jint) SystemDictionary::pd_cache_table()->removed_entries_count();
2011 WB_END
2012
2013 #define CC (char*)
2014
2015 static JNINativeMethod methods[] = {
2016 {CC"getObjectAddress0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress },
2017 {CC"getObjectSize0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectSize },
2018 {CC"isObjectInOldGen0", CC"(Ljava/lang/Object;)Z", (void*)&WB_isObjectInOldGen },
2019 {CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize },
2020 {CC"getVMPageSize", CC"()I", (void*)&WB_GetVMPageSize },
2021 {CC"getVMAllocationGranularity", CC"()J", (void*)&WB_GetVMAllocationGranularity },
2022 {CC"getVMLargePageSize", CC"()J", (void*)&WB_GetVMLargePageSize},
2023 {CC"getHeapSpaceAlignment", CC"()J", (void*)&WB_GetHeapSpaceAlignment},
2024 {CC"getHeapAlignment", CC"()J", (void*)&WB_GetHeapAlignment},
2025 {CC"isClassAlive0", CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive },
2026 {CC"getSymbolRefcount", CC"(Ljava/lang/String;)I", (void*)&WB_GetSymbolRefcount },
2027 {CC"parseCommandLine0",
2028 CC"(Ljava/lang/String;C[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
2029 (void*) &WB_ParseCommandLine
2030 },
2031 {CC"addToBootstrapClassLoaderSearch0", CC"(Ljava/lang/String;)V",
2032 (void*)&WB_AddToBootstrapClassLoaderSearch},
2033 {CC"addToSystemClassLoaderSearch0", CC"(Ljava/lang/String;)V",
2034 (void*)&WB_AddToSystemClassLoaderSearch},
2035 {CC"getCompressedOopsMaxHeapSize", CC"()J",
2036 (void*)&WB_GetCompressedOopsMaxHeapSize},
2037 {CC"printHeapSizes", CC"()V", (void*)&WB_PrintHeapSizes },
2038 {CC"runMemoryUnitTests", CC"()V", (void*)&WB_RunMemoryUnitTests},
2039 {CC"readFromNoaccessArea",CC"()V", (void*)&WB_ReadFromNoaccessArea},
2040 {CC"stressVirtualSpaceResize",CC"(JJJ)I", (void*)&WB_StressVirtualSpaceResize},
2041 #if INCLUDE_CDS
2042 {CC"getOffsetForName0", CC"(Ljava/lang/String;)I", (void*)&WB_GetOffsetForName},
2043 #endif
2044 #if INCLUDE_G1GC
2045 {CC"g1InConcurrentMark", CC"()Z", (void*)&WB_G1InConcurrentMark},
2046 {CC"g1IsHumongous0", CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous },
2047 {CC"g1BelongsToHumongousRegion0", CC"(J)Z", (void*)&WB_G1BelongsToHumongousRegion},
2048 {CC"g1BelongsToFreeRegion0", CC"(J)Z", (void*)&WB_G1BelongsToFreeRegion},
2049 {CC"g1NumMaxRegions", CC"()J", (void*)&WB_G1NumMaxRegions },
2050 {CC"g1NumFreeRegions", CC"()J", (void*)&WB_G1NumFreeRegions },
2051 {CC"g1RegionSize", CC"()I", (void*)&WB_G1RegionSize },
2052 {CC"g1StartConcMarkCycle", CC"()Z", (void*)&WB_G1StartMarkCycle },
2053 {CC"g1AuxiliaryMemoryUsage", CC"()Ljava/lang/management/MemoryUsage;",
2054 (void*)&WB_G1AuxiliaryMemoryUsage },
2055 {CC"g1GetMixedGCInfo", CC"(I)[J", (void*)&WB_G1GetMixedGCInfo },
2056 #endif // INCLUDE_G1GC
2057 #if INCLUDE_PARALLELGC
2058 {CC"psVirtualSpaceAlignment",CC"()J", (void*)&WB_PSVirtualSpaceAlignment},
2059 {CC"psHeapGenerationAlignment",CC"()J", (void*)&WB_PSHeapGenerationAlignment},
2060 #endif
2061 #if INCLUDE_NMT
2062 {CC"NMTMalloc", CC"(J)J", (void*)&WB_NMTMalloc },
2063 {CC"NMTMallocWithPseudoStack", CC"(JI)J", (void*)&WB_NMTMallocWithPseudoStack},
2064 {CC"NMTFree", CC"(J)V", (void*)&WB_NMTFree },
2065 {CC"NMTReserveMemory", CC"(J)J", (void*)&WB_NMTReserveMemory },
2066 {CC"NMTAttemptReserveMemoryAt", CC"(JJ)J", (void*)&WB_NMTAttemptReserveMemoryAt },
2067 {CC"NMTCommitMemory", CC"(JJ)V", (void*)&WB_NMTCommitMemory },
2068 {CC"NMTUncommitMemory", CC"(JJ)V", (void*)&WB_NMTUncommitMemory },
2069 {CC"NMTReleaseMemory", CC"(JJ)V", (void*)&WB_NMTReleaseMemory },
2070 {CC"NMTChangeTrackingLevel", CC"()Z", (void*)&WB_NMTChangeTrackingLevel},
2071 {CC"NMTGetHashSize", CC"()I", (void*)&WB_NMTGetHashSize },
|
65 #include "runtime/jniHandles.inline.hpp"
66 #include "runtime/os.hpp"
67 #include "runtime/sweeper.hpp"
68 #include "runtime/thread.hpp"
69 #include "runtime/threadSMR.hpp"
70 #include "runtime/vm_version.hpp"
71 #include "services/memoryService.hpp"
72 #include "utilities/align.hpp"
73 #include "utilities/debug.hpp"
74 #include "utilities/elfFile.hpp"
75 #include "utilities/exceptions.hpp"
76 #include "utilities/macros.hpp"
77 #if INCLUDE_CDS
78 #include "prims/cdsoffsets.hpp"
79 #endif // INCLUDE_CDS
80 #if INCLUDE_G1GC
81 #include "gc/g1/g1CollectedHeap.inline.hpp"
82 #include "gc/g1/g1ConcurrentMark.hpp"
83 #include "gc/g1/g1ConcurrentMarkThread.hpp"
84 #include "gc/g1/heapRegionRemSet.hpp"
85 #include "gc/g1/heterogeneousHeapRegionManager.hpp"
86 #endif // INCLUDE_G1GC
87 #if INCLUDE_PARALLELGC
88 #include "gc/parallel/parallelScavengeHeap.inline.hpp"
89 #include "gc/parallel/adjoiningGenerations.hpp"
90 #endif // INCLUDE_PARALLELGC
91 #if INCLUDE_NMT
92 #include "services/mallocSiteTable.hpp"
93 #include "services/memTracker.hpp"
94 #include "utilities/nativeCallStack.hpp"
95 #endif // INCLUDE_NMT
96
97 #ifdef LINUX
98 #include "osContainer_linux.hpp"
99 #endif
100
101 #define SIZE_T_MAX_VALUE ((size_t) -1)
102
103 #define CHECK_JNI_EXCEPTION_(env, value) \
104 do { \
105 JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \
354 return false;
355 }
356 return !(hr->is_young());
357 }
358 #endif
359 #if INCLUDE_PARALLELGC
360 if (UseParallelGC) {
361 ParallelScavengeHeap* psh = ParallelScavengeHeap::heap();
362 return !psh->is_in_young(p);
363 }
364 #endif
365 #if INCLUDE_ZGC
366 if (UseZGC) {
367 return Universe::heap()->is_in(p);
368 }
369 #endif
370 GenCollectedHeap* gch = GenCollectedHeap::heap();
371 return !gch->is_in_young(p);
372 WB_END
373
374 WB_ENTRY(jlong, WB_GetHeapBase(JNIEnv* env, jobject o))
375 return (jlong)Universe::heap()->base();
376 WB_END
377
378 WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj))
379 oop p = JNIHandles::resolve(obj);
380 return Universe::heap()->obj_size(p) * HeapWordSize;
381 WB_END
382
383 WB_ENTRY(jlong, WB_GetHeapSpaceAlignment(JNIEnv* env, jobject o))
384 size_t alignment = Universe::heap()->collector_policy()->space_alignment();
385 return (jlong)alignment;
386 WB_END
387
388 WB_ENTRY(jlong, WB_GetHeapAlignment(JNIEnv* env, jobject o))
389 size_t alignment = Universe::heap()->collector_policy()->heap_alignment();
390 return (jlong)alignment;
391 WB_END
392
393 WB_ENTRY(jboolean, WB_SupportsConcurrentGCPhaseControl(JNIEnv* env, jobject o))
394 return Universe::heap()->supports_concurrent_phase_control();
395 WB_END
396
397 WB_ENTRY(jobjectArray, WB_GetConcurrentGCPhases(JNIEnv* env, jobject o))
485
486 WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o))
487 if (UseG1GC) {
488 G1CollectedHeap* g1h = G1CollectedHeap::heap();
489 if (!g1h->concurrent_mark()->cm_thread()->during_cycle()) {
490 g1h->collect(GCCause::_wb_conc_mark);
491 return true;
492 }
493 return false;
494 }
495 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1StartMarkCycle: G1 GC is not enabled");
496 WB_END
497
498 WB_ENTRY(jint, WB_G1RegionSize(JNIEnv* env, jobject o))
499 if (UseG1GC) {
500 return (jint)HeapRegion::GrainBytes;
501 }
502 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1RegionSize: G1 GC is not enabled");
503 WB_END
504
505 WB_ENTRY(jlong, WB_G1DramReservedStart(JNIEnv* env, jobject o))
506 if (UseG1GC) {
507 G1CollectedHeap* g1h = G1CollectedHeap::heap();
508 if (g1h->is_hetero_heap()) {
509 uint start_region = static_cast<HeterogeneousHeapRegionManager*>(g1h->hrm())->start_index_of_dram();
510 return (jlong)(Universe::heap()->base() + start_region * HeapRegion::GrainBytes);
511 } else {
512 return (jlong)Universe::heap()->base();
513 }
514 }
515 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1DramReservedStart: G1 GC is not enabled");
516 WB_END
517
518 WB_ENTRY(jlong, WB_G1DramReservedEnd(JNIEnv* env, jobject o))
519 if (UseG1GC) {
520 G1CollectedHeap* g1h = G1CollectedHeap::heap();
521 if (g1h->is_hetero_heap()) {
522 uint end_region = static_cast<HeterogeneousHeapRegionManager*>(g1h->hrm())->end_index_of_dram();
523 return (jlong)(Universe::heap()->base() + (end_region + 1) * HeapRegion::GrainBytes - 1);
524 }
525 else {
526 return (jlong)Universe::heap()->base() + Universe::heap()->collector_policy()->max_heap_byte_size();
527 }
528 }
529 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1DramReservedEnd: G1 GC is not enabled");
530 WB_END
531
532 WB_ENTRY(jlong, WB_G1NvdimmReservedStart(JNIEnv* env, jobject o))
533 if (UseG1GC) {
534 G1CollectedHeap* g1h = G1CollectedHeap::heap();
535 if (g1h->is_hetero_heap()) {
536 uint start_region = static_cast<HeterogeneousHeapRegionManager*>(g1h->hrm())->start_index_of_nvdimm();
537 return (jlong)(Universe::heap()->base() + start_region * HeapRegion::GrainBytes);
538 } else {
539 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1NvdimmReservedStart: G1 heap is not heterogeneous");
540 }
541 }
542 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1NvdimmReservedStart: G1 GC is not enabled");
543 WB_END
544
545 WB_ENTRY(jlong, WB_G1NvdimmReservedEnd(JNIEnv* env, jobject o))
546 if (UseG1GC) {
547 G1CollectedHeap* g1h = G1CollectedHeap::heap();
548 if (g1h->is_hetero_heap()) {
549 uint end_region = static_cast<HeterogeneousHeapRegionManager*>(g1h->hrm())->start_index_of_nvdimm();
550 return (jlong)(Universe::heap()->base() + (end_region + 1) * HeapRegion::GrainBytes - 1);
551 }
552 else {
553 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1NvdimmReservedEnd: G1 heap is not heterogeneous");
554 }
555 }
556 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1NvdimmReservedEnd: G1 GC is not enabled");
557 WB_END
558
559 #endif // INCLUDE_G1GC
560
561 #if INCLUDE_PARALLELGC
562
563 WB_ENTRY(jlong, WB_PSVirtualSpaceAlignment(JNIEnv* env, jobject o))
564 if (UseParallelGC) {
565 return ParallelScavengeHeap::heap()->gens()->virtual_spaces()->alignment();
566 }
567 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_PSVirtualSpaceAlignment: Parallel GC is not enabled");
568 WB_END
569
570 WB_ENTRY(jlong, WB_PSHeapGenerationAlignment(JNIEnv* env, jobject o))
571 if (UseParallelGC) {
572 return ParallelScavengeHeap::heap()->generation_alignment();
573 }
574 THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_PSHeapGenerationAlignment: Parallel GC is not enabled");
575 WB_END
576
577 #endif // INCLUDE_PARALLELGC
578
2057 // Elf decoder
2058 WB_ENTRY(void, WB_DisableElfSectionCache(JNIEnv* env))
2059 #if !defined(_WINDOWS) && !defined(__APPLE__) && !defined(_AIX)
2060 ElfFile::_do_not_cache_elf_section = true;
2061 #endif
2062 WB_END
2063
2064 WB_ENTRY(jint, WB_ResolvedMethodRemovedCount(JNIEnv* env, jobject o))
2065 return (jint) ResolvedMethodTable::removed_entries_count();
2066 WB_END
2067
2068 WB_ENTRY(jint, WB_ProtectionDomainRemovedCount(JNIEnv* env, jobject o))
2069 return (jint) SystemDictionary::pd_cache_table()->removed_entries_count();
2070 WB_END
2071
2072 #define CC (char*)
2073
2074 static JNINativeMethod methods[] = {
2075 {CC"getObjectAddress0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress },
2076 {CC"getObjectSize0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectSize },
2077 {CC"getHeapBase", CC"()J", (void*)&WB_GetHeapBase },
2078 {CC"isObjectInOldGen0", CC"(Ljava/lang/Object;)Z", (void*)&WB_isObjectInOldGen },
2079 {CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize },
2080 {CC"getVMPageSize", CC"()I", (void*)&WB_GetVMPageSize },
2081 {CC"getVMAllocationGranularity", CC"()J", (void*)&WB_GetVMAllocationGranularity },
2082 {CC"getVMLargePageSize", CC"()J", (void*)&WB_GetVMLargePageSize},
2083 {CC"getHeapSpaceAlignment", CC"()J", (void*)&WB_GetHeapSpaceAlignment},
2084 {CC"getHeapAlignment", CC"()J", (void*)&WB_GetHeapAlignment},
2085 {CC"isClassAlive0", CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive },
2086 {CC"getSymbolRefcount", CC"(Ljava/lang/String;)I", (void*)&WB_GetSymbolRefcount },
2087 {CC"parseCommandLine0",
2088 CC"(Ljava/lang/String;C[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
2089 (void*) &WB_ParseCommandLine
2090 },
2091 {CC"addToBootstrapClassLoaderSearch0", CC"(Ljava/lang/String;)V",
2092 (void*)&WB_AddToBootstrapClassLoaderSearch},
2093 {CC"addToSystemClassLoaderSearch0", CC"(Ljava/lang/String;)V",
2094 (void*)&WB_AddToSystemClassLoaderSearch},
2095 {CC"getCompressedOopsMaxHeapSize", CC"()J",
2096 (void*)&WB_GetCompressedOopsMaxHeapSize},
2097 {CC"printHeapSizes", CC"()V", (void*)&WB_PrintHeapSizes },
2098 {CC"runMemoryUnitTests", CC"()V", (void*)&WB_RunMemoryUnitTests},
2099 {CC"readFromNoaccessArea",CC"()V", (void*)&WB_ReadFromNoaccessArea},
2100 {CC"stressVirtualSpaceResize",CC"(JJJ)I", (void*)&WB_StressVirtualSpaceResize},
2101 #if INCLUDE_CDS
2102 {CC"getOffsetForName0", CC"(Ljava/lang/String;)I", (void*)&WB_GetOffsetForName},
2103 #endif
2104 #if INCLUDE_G1GC
2105 {CC"g1InConcurrentMark", CC"()Z", (void*)&WB_G1InConcurrentMark},
2106 {CC"g1IsHumongous0", CC"(Ljava/lang/Object;)Z", (void*)&WB_G1IsHumongous },
2107 {CC"g1BelongsToHumongousRegion0", CC"(J)Z", (void*)&WB_G1BelongsToHumongousRegion},
2108 {CC"g1BelongsToFreeRegion0", CC"(J)Z", (void*)&WB_G1BelongsToFreeRegion},
2109 {CC"g1NumMaxRegions", CC"()J", (void*)&WB_G1NumMaxRegions },
2110 {CC"g1NumFreeRegions", CC"()J", (void*)&WB_G1NumFreeRegions },
2111 {CC"g1RegionSize", CC"()I", (void*)&WB_G1RegionSize },
2112 {CC"g1DramReservedStart", CC"()J", (void*)&WB_G1DramReservedStart },
2113 {CC"g1DramReservedEnd", CC"()J", (void*)&WB_G1DramReservedEnd },
2114 {CC"g1NvdimmReservedStart", CC"()J", (void*)&WB_G1NvdimmReservedStart },
2115 {CC"g1NvdimmReservedEnd", CC"()J", (void*)&WB_G1NvdimmReservedEnd },
2116 {CC"g1StartConcMarkCycle", CC"()Z", (void*)&WB_G1StartMarkCycle },
2117 {CC"g1AuxiliaryMemoryUsage", CC"()Ljava/lang/management/MemoryUsage;",
2118 (void*)&WB_G1AuxiliaryMemoryUsage },
2119 {CC"g1GetMixedGCInfo", CC"(I)[J", (void*)&WB_G1GetMixedGCInfo },
2120 #endif // INCLUDE_G1GC
2121 #if INCLUDE_PARALLELGC
2122 {CC"psVirtualSpaceAlignment",CC"()J", (void*)&WB_PSVirtualSpaceAlignment},
2123 {CC"psHeapGenerationAlignment",CC"()J", (void*)&WB_PSHeapGenerationAlignment},
2124 #endif
2125 #if INCLUDE_NMT
2126 {CC"NMTMalloc", CC"(J)J", (void*)&WB_NMTMalloc },
2127 {CC"NMTMallocWithPseudoStack", CC"(JI)J", (void*)&WB_NMTMallocWithPseudoStack},
2128 {CC"NMTFree", CC"(J)V", (void*)&WB_NMTFree },
2129 {CC"NMTReserveMemory", CC"(J)J", (void*)&WB_NMTReserveMemory },
2130 {CC"NMTAttemptReserveMemoryAt", CC"(JJ)J", (void*)&WB_NMTAttemptReserveMemoryAt },
2131 {CC"NMTCommitMemory", CC"(JJ)V", (void*)&WB_NMTCommitMemory },
2132 {CC"NMTUncommitMemory", CC"(JJ)V", (void*)&WB_NMTUncommitMemory },
2133 {CC"NMTReleaseMemory", CC"(JJ)V", (void*)&WB_NMTReleaseMemory },
2134 {CC"NMTChangeTrackingLevel", CC"()Z", (void*)&WB_NMTChangeTrackingLevel},
2135 {CC"NMTGetHashSize", CC"()I", (void*)&WB_NMTGetHashSize },
|