< prev index next >
src/hotspot/share/prims/whitebox.cpp
Print this page
rev 52494 : adding jtreg tests, whitebox api.
rev 52631 : Merge
*** 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
*** 368,377 ****
--- 369,382 ----
#endif
GenCollectedHeap* gch = GenCollectedHeap::heap();
return !gch->is_in_young(p);
WB_END
+ WB_ENTRY(jlong, WB_GetHeapBase(JNIEnv* env, jobject o))
+ return (jlong)Universe::heap()->base();
+ WB_END
+
WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj))
oop p = JNIHandles::resolve(obj);
return Universe::heap()->obj_size(p) * HeapWordSize;
WB_END
*** 495,504 ****
--- 500,563 ----
return (jint)HeapRegion::GrainBytes;
}
THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1RegionSize: G1 GC is not enabled");
WB_END
+ WB_ENTRY(jlong, WB_G1DramReservedStart(JNIEnv* env, jobject o))
+ if (UseG1GC) {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ if (g1h->is_hetero_heap()) {
+ uint start_region = static_cast<HeterogeneousHeapRegionManager*>(g1h->hrm())->start_index_of_dram();
+ return (jlong)(Universe::heap()->base() + start_region * HeapRegion::GrainBytes);
+ } else {
+ return (jlong)Universe::heap()->base();
+ }
+ }
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1DramReservedStart: G1 GC is not enabled");
+ WB_END
+
+ WB_ENTRY(jlong, WB_G1DramReservedEnd(JNIEnv* env, jobject o))
+ if (UseG1GC) {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ if (g1h->is_hetero_heap()) {
+ uint end_region = static_cast<HeterogeneousHeapRegionManager*>(g1h->hrm())->end_index_of_dram();
+ return (jlong)(Universe::heap()->base() + (end_region + 1) * HeapRegion::GrainBytes - 1);
+ }
+ else {
+ return (jlong)Universe::heap()->base() + Universe::heap()->collector_policy()->max_heap_byte_size();
+ }
+ }
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1DramReservedEnd: G1 GC is not enabled");
+ WB_END
+
+ WB_ENTRY(jlong, WB_G1NvdimmReservedStart(JNIEnv* env, jobject o))
+ if (UseG1GC) {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ if (g1h->is_hetero_heap()) {
+ uint start_region = static_cast<HeterogeneousHeapRegionManager*>(g1h->hrm())->start_index_of_nvdimm();
+ return (jlong)(Universe::heap()->base() + start_region * HeapRegion::GrainBytes);
+ } else {
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1NvdimmReservedStart: G1 heap is not heterogeneous");
+ }
+ }
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1NvdimmReservedStart: G1 GC is not enabled");
+ WB_END
+
+ WB_ENTRY(jlong, WB_G1NvdimmReservedEnd(JNIEnv* env, jobject o))
+ if (UseG1GC) {
+ G1CollectedHeap* g1h = G1CollectedHeap::heap();
+ if (g1h->is_hetero_heap()) {
+ uint end_region = static_cast<HeterogeneousHeapRegionManager*>(g1h->hrm())->start_index_of_nvdimm();
+ return (jlong)(Universe::heap()->base() + (end_region + 1) * HeapRegion::GrainBytes - 1);
+ }
+ else {
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1NvdimmReservedEnd: G1 heap is not heterogeneous");
+ }
+ }
+ THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1NvdimmReservedEnd: G1 GC is not enabled");
+ WB_END
+
#endif // INCLUDE_G1GC
#if INCLUDE_PARALLELGC
WB_ENTRY(jlong, WB_PSVirtualSpaceAlignment(JNIEnv* env, jobject o))
*** 2013,2022 ****
--- 2072,2082 ----
#define CC (char*)
static JNINativeMethod methods[] = {
{CC"getObjectAddress0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress },
{CC"getObjectSize0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectSize },
+ {CC"getHeapBase", CC"()J", (void*)&WB_GetHeapBase },
{CC"isObjectInOldGen0", CC"(Ljava/lang/Object;)Z", (void*)&WB_isObjectInOldGen },
{CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize },
{CC"getVMPageSize", CC"()I", (void*)&WB_GetVMPageSize },
{CC"getVMAllocationGranularity", CC"()J", (void*)&WB_GetVMAllocationGranularity },
{CC"getVMLargePageSize", CC"()J", (void*)&WB_GetVMLargePageSize},
*** 2047,2056 ****
--- 2107,2120 ----
{CC"g1BelongsToHumongousRegion0", CC"(J)Z", (void*)&WB_G1BelongsToHumongousRegion},
{CC"g1BelongsToFreeRegion0", CC"(J)Z", (void*)&WB_G1BelongsToFreeRegion},
{CC"g1NumMaxRegions", CC"()J", (void*)&WB_G1NumMaxRegions },
{CC"g1NumFreeRegions", CC"()J", (void*)&WB_G1NumFreeRegions },
{CC"g1RegionSize", CC"()I", (void*)&WB_G1RegionSize },
+ {CC"g1DramReservedStart", CC"()J", (void*)&WB_G1DramReservedStart },
+ {CC"g1DramReservedEnd", CC"()J", (void*)&WB_G1DramReservedEnd },
+ {CC"g1NvdimmReservedStart", CC"()J", (void*)&WB_G1NvdimmReservedStart },
+ {CC"g1NvdimmReservedEnd", CC"()J", (void*)&WB_G1NvdimmReservedEnd },
{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 },
#endif // INCLUDE_G1GC
< prev index next >