--- old/src/hotspot/share/memory/universe.hpp 2018-05-07 15:52:03.272367261 +0200 +++ new/src/hotspot/share/memory/universe.hpp 2018-05-07 15:52:02.988362450 +0200 @@ -195,6 +195,9 @@ static struct NarrowPtrStruct _narrow_klass; static address _narrow_ptrs_base; + // value type using klass alignment encoded as oop metadata + static int _oop_metadata_valuetype_mask; + // array of dummy objects used with +FullGCAlot debug_only(static objArrayOop _fullgc_alot_dummy_array;) // index of next entry to clear @@ -436,8 +439,13 @@ static void set_narrow_klass_shift(int shift) { assert(shift == 0 || shift == LogKlassAlignmentInBytes, "invalid shift for klass ptrs"); _narrow_klass._shift = shift; + if (shift == LogKlassAlignmentInBytes) { + _oop_metadata_valuetype_mask = 1; + } } + static int oop_metadata_valuetype_mask() { return _oop_metadata_valuetype_mask; } + // Reserve Java heap and determine CompressedOops mode static ReservedSpace reserve_heap(size_t heap_size, size_t alignment);