Request for review: 8000968: NPG UseCompressedKlassPointers asserts withObjectAlignmentInBytes for > 32G Compressed Oops

harold seigel harold.seigel at
Fri Jan 11 11:13:38 PST 2013


Please review the following change to fix bug 8000968.

The cause of this problem is that the compression mode for Oops and 
KlassPointers compression is determined using OopEncodingHeapMax, which 
is based on the alignment and shifting of CompressedOops.  When 
ObjectAlignmentInBytes=32, Oops pointers can be shifted by 5 bits.  
However, KlassPointers are still 8 byte aligned and can only be shifted 
by 3 bits.  Hence, a common compression mode that is calculated based on 
CompressedOop's 5 bit shift does not work for CompressedKlassPointers.

This fix adds a new variable, KlassPtrEncodingHeapMax, which is based on 
the alignment and shifting of CompressedKlassPointers.  It then uses 
KlassPtrEncodingHeapMax, along with OopEncodingHeapMax, to determine 
which compression mode to use.  This means that a compression mode is 
selected only if it works for both Oops and KlassPointers.  Previously, 
only Oops were looked at.

This was tested with JPRT, JCK vm and lang tests,  ute vm.quck.testlist, 
and hand testing.

Openwebrev at 

Bug link at

Thanks!  Harold

More information about the hotspot-runtime-dev mailing list