CMS doesn't work with compressed oops so it's turned off because it has these chunk headers that use the lsb of the _klass field which is not zero in the compressed oops case.
In 64 bit mode, use a bit in the markOop instead of the lsb in the _klass field to indicate free. There's apparently 25 spare bits in the markOop in 64 bit.
btw, I volunteered to do this too.
Fixed 6687581: Make CMS work with compressed oops
Make FreeChunk read markword instead of LSB in _klass pointer to indicate
that it's a FreeChunk for compressed oops. Moved the size field first so
that it is used consistently for 64 bits w/out compressed oops, and 32 bits
to reduce ifdefs.
Changed FreeChunk and associated code in SA.
Fix verified: y
Testing: nsk stress, sajdi and my sanity testlists with CMS+compressedoops.