# HG changeset patch # User rkennke # Date 1539095670 -7200 # Tue Oct 09 16:34:30 2018 +0200 # Node ID acbc778b57a3b7d829fcc159d534b0404140da30 # Parent 9f154d0a59f6c64d84f78c40579dab007abce25b 8211270: GC abstraction to get real object and headers size diff --git a/src/hotspot/share/gc/shared/collectedHeap.cpp b/src/hotspot/share/gc/shared/collectedHeap.cpp --- a/src/hotspot/share/gc/shared/collectedHeap.cpp +++ b/src/hotspot/share/gc/shared/collectedHeap.cpp @@ -586,3 +586,7 @@ void CollectedHeap::deduplicate_string(oop str) { // Do nothing, unless overridden in subclass. } + +size_t CollectedHeap::obj_size(oop obj) const { + return obj->size(); +} diff --git a/src/hotspot/share/gc/shared/collectedHeap.hpp b/src/hotspot/share/gc/shared/collectedHeap.hpp --- a/src/hotspot/share/gc/shared/collectedHeap.hpp +++ b/src/hotspot/share/gc/shared/collectedHeap.hpp @@ -576,6 +576,8 @@ virtual bool is_oop(oop object) const; + virtual size_t obj_size(oop obj) const; + // Non product verification and debugging. #ifndef PRODUCT // Support for PromotionFailureALot. Return true if it's time to cause a diff --git a/src/hotspot/share/prims/jvmtiEnv.cpp b/src/hotspot/share/prims/jvmtiEnv.cpp --- a/src/hotspot/share/prims/jvmtiEnv.cpp +++ b/src/hotspot/share/prims/jvmtiEnv.cpp @@ -470,7 +470,7 @@ JvmtiEnv::GetObjectSize(jobject object, jlong* size_ptr) { oop mirror = JNIHandles::resolve_external_guard(object); NULL_CHECK(mirror, JVMTI_ERROR_INVALID_OBJECT); - *size_ptr = (jlong)mirror->size() * wordSize; + *size_ptr = (jlong)Universe::heap()->obj_size(mirror) * wordSize; return JVMTI_ERROR_NONE; } /* end GetObjectSize */ diff --git a/src/hotspot/share/prims/whitebox.cpp b/src/hotspot/share/prims/whitebox.cpp --- a/src/hotspot/share/prims/whitebox.cpp +++ b/src/hotspot/share/prims/whitebox.cpp @@ -371,7 +371,7 @@ WB_ENTRY(jlong, WB_GetObjectSize(JNIEnv* env, jobject o, jobject obj)) oop p = JNIHandles::resolve(obj); - return p->size() * HeapWordSize; + return Universe::heap()->obj_size(p) * HeapWordSize; WB_END WB_ENTRY(jlong, WB_GetHeapSpaceAlignment(JNIEnv* env, jobject o))