--- old/src/hotspot/share/memory/universe.hpp 2018-03-20 09:05:05.022034985 +0000 +++ new/src/hotspot/share/memory/universe.hpp 2018-03-20 09:05:04.512034985 +0000 @@ -194,7 +194,8 @@ // For UseCompressedClassPointers. static struct NarrowPtrStruct _narrow_klass; static address _narrow_ptrs_base; - + // CompressedClassSpaceSize set to 1GB, but appear 3GB away from _narrow_ptrs_base during CDS dump. + static uint64_t _narrow_klass_range; // array of dummy objects used with +FullGCAlot debug_only(static objArrayOop _fullgc_alot_dummy_array;) // index of next entry to clear @@ -244,6 +245,10 @@ assert(UseCompressedClassPointers, "no compressed klass ptrs?"); _narrow_klass._base = base; } + static void set_narrow_klass_range(uint64_t range) { + assert(UseCompressedClassPointers, "no compressed klass ptrs?"); + _narrow_klass_range = range; + } static void set_narrow_oop_use_implicit_null_checks(bool use) { assert(UseCompressedOops, "no compressed ptrs?"); _narrow_oop._use_implicit_null_checks = use; @@ -429,6 +434,7 @@ // For UseCompressedClassPointers static address narrow_klass_base() { return _narrow_klass._base; } static bool is_narrow_klass_base(void* addr) { return (narrow_klass_base() == (address)addr); } + static uint64_t narrow_klass_range() { return _narrow_klass_range; } static int narrow_klass_shift() { return _narrow_klass._shift; } static bool narrow_klass_use_implicit_null_checks() { return _narrow_klass._use_implicit_null_checks; }