Request for review: 8000968: NPG UseCompressedKlassPointers asserts withObjectAlignmentInBytes for > 32G Compressed Oops
harold.seigel at oracle.com
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 http://cr.openjdk.java.net/~hseigel/bug_8000968/
Bug link at http://bugs.sun.com/view_bug.do?bug_id=8000968
More information about the hotspot-runtime-dev