--- old/src/hotspot/share/memory/universe.hpp 2018-01-03 13:40:51.206231629 +0000 +++ new/src/hotspot/share/memory/universe.hpp 2018-01-03 13:40:50.366291998 +0000 @@ -195,7 +195,10 @@ // For UseCompressedClassPointers. static struct NarrowPtrStruct _narrow_klass; static address _narrow_ptrs_base; - +#ifdef AARCH64 + // CompressedClassSpaceSize set to 1GB, but appear 3GB away from _narrow_ptrs_base during CDS dump. + static uint64_t _narrow_klass_range; +#endif // array of dummy objects used with +FullGCAlot debug_only(static objArrayOop _fullgc_alot_dummy_array;) // index of next entry to clear @@ -246,11 +249,16 @@ assert(UseCompressedClassPointers, "no compressed klass ptrs?"); _narrow_klass._base = base; } +#ifdef AARCH64 + static void set_narrow_klass_range(uint64_t range) { + assert(UseCompressedClassPointers, "no compressed klass ptrs?"); + _narrow_klass_range = range; + } +#endif static void set_narrow_oop_use_implicit_null_checks(bool use) { assert(UseCompressedOops, "no compressed ptrs?"); _narrow_oop._use_implicit_null_checks = use; } - // Debugging static int _verify_count; // number of verifies done @@ -421,6 +429,9 @@ // 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); } +#ifdef AARCH64 + static uint64_t narrow_klass_range() { return _narrow_klass_range; } +#endif static int narrow_klass_shift() { return _narrow_klass._shift; } static bool narrow_klass_use_implicit_null_checks() { return _narrow_klass._use_implicit_null_checks; }