< prev index next >
src/hotspot/share/prims/whitebox.cpp
Print this page
rev 53002 : imported patch webrev.11
*** 80,89 ****
--- 80,90 ----
#if INCLUDE_G1GC
#include "gc/g1/g1CollectedHeap.inline.hpp"
#include "gc/g1/g1ConcurrentMark.hpp"
#include "gc/g1/g1ConcurrentMarkThread.hpp"
#include "gc/g1/heapRegionRemSet.hpp"
+ #include "gc/g1/heterogeneousHeapRegionManager.hpp"
#endif // INCLUDE_G1GC
#if INCLUDE_PARALLELGC
#include "gc/parallel/parallelScavengeHeap.inline.hpp"
#include "gc/parallel/adjoiningGenerations.hpp"
#endif // INCLUDE_PARALLELGC
*** 497,506 ****
--- 498,562 ----
THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1RegionSize: G1 GC is not enabled");
WB_END
#endif // INCLUDE_G1GC
+ #if INCLUDE_G1GC
+ WB_ENTRY(jlong, WB_DramReservedStart(JNIEnv* env, jobject o))
+ if (UseG1GC) {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ if (g1h->g1_collector_policy()->is_hetero_heap()) {
+ uint start_region = HeterogeneousHeapRegionManager::manager()->start_index_of_dram();
+ return (jlong)(g1h->base() + start_region * HeapRegion::GrainBytes);
+ } else {
+ return (jlong)g1h->base();
+ }
+ }
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_DramReservedStart: enabled only for G1");
+ WB_END
+
+ WB_ENTRY(jlong, WB_DramReservedEnd(JNIEnv* env, jobject o))
+ if (UseG1GC) {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ if (g1h->g1_collector_policy()->is_hetero_heap()) {
+ uint end_region = HeterogeneousHeapRegionManager::manager()->end_index_of_dram();
+ return (jlong)(g1h->base() + (end_region + 1) * HeapRegion::GrainBytes - 1);
+ } else {
+ return (jlong)g1h->base() + g1h->collector_policy()->max_heap_byte_size();
+ }
+ }
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_DramReservedEnd: enabled only for G1");
+ WB_END
+
+ WB_ENTRY(jlong, WB_NvdimmReservedStart(JNIEnv* env, jobject o))
+ if (UseG1GC) {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ if (g1h->g1_collector_policy()->is_hetero_heap()) {
+ uint start_region = HeterogeneousHeapRegionManager::manager()->start_index_of_nvdimm();
+ return (jlong)(g1h->base() + start_region * HeapRegion::GrainBytes);
+ } else {
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_NvdimmReservedStart: Old gen is not allocated on NV-DIMM using AllocateOldGenAt flag");
+ }
+ }
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_NvdimmReservedStart: enabled only for G1");
+ WB_END
+
+ WB_ENTRY(jlong, WB_NvdimmReservedEnd(JNIEnv* env, jobject o))
+ if (UseG1GC) {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ if (g1h->g1_collector_policy()->is_hetero_heap()) {
+ uint end_region = HeterogeneousHeapRegionManager::manager()->start_index_of_nvdimm();
+ return (jlong)(g1h->base() + (end_region + 1) * HeapRegion::GrainBytes - 1);
+ } else {
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_NvdimmReservedEnd: Old gen is not allocated on NV-DIMM using AllocateOldGenAt flag");
+ }
+ }
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_NvdimmReservedEnd: enabled only for G1");
+ WB_END
+
+ #endif // INCLUDE_G1GC
+
#if INCLUDE_PARALLELGC
WB_ENTRY(jlong, WB_PSVirtualSpaceAlignment(JNIEnv* env, jobject o))
if (UseParallelGC) {
return ParallelScavengeHeap::heap()->gens()->virtual_spaces()->alignment();
*** 2051,2060 ****
--- 2107,2120 ----
{CC"g1RegionSize", CC"()I", (void*)&WB_G1RegionSize },
{CC"g1StartConcMarkCycle", CC"()Z", (void*)&WB_G1StartMarkCycle },
{CC"g1AuxiliaryMemoryUsage", CC"()Ljava/lang/management/MemoryUsage;",
(void*)&WB_G1AuxiliaryMemoryUsage },
{CC"g1GetMixedGCInfo", CC"(I)[J", (void*)&WB_G1GetMixedGCInfo },
+ {CC"dramReservedStart", CC"()J", (void*)&WB_DramReservedStart },
+ {CC"dramReservedEnd", CC"()J", (void*)&WB_DramReservedEnd },
+ {CC"nvdimmReservedStart", CC"()J", (void*)&WB_NvdimmReservedStart },
+ {CC"nvdimmReservedEnd", CC"()J", (void*)&WB_NvdimmReservedEnd },
#endif // INCLUDE_G1GC
#if INCLUDE_PARALLELGC
{CC"psVirtualSpaceAlignment",CC"()J", (void*)&WB_PSVirtualSpaceAlignment},
{CC"psHeapGenerationAlignment",CC"()J", (void*)&WB_PSHeapGenerationAlignment},
#endif
< prev index next >