Please review 6687581: Make CMS work with compressed oops
Vladimir.Kozlov at Sun.COM
Thu May 22 11:34:48 PDT 2008
Never mind. It is the array allocation and the length is stored
into the gap.
So it was the bug on x64 since the length is stored before the klass
and store_klass() will overwrite it with 0.
Vladimir Kozlov wrote:
> I looked on all changes except GC changes.
> In assembler_sparc.cpp and assembler_x86_64.cpp
> the method store_klass() is called from tlab_refill() method.
> You may need to call store_klass_gap() there to zero the gap.
> Other changes looks good.
> Coleen Phillimore - Sun Microsystems wrote:
>> Please email your comments to me regarding this bug fix, described below:
>> 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.
>> Also needed to change set_klass to not zero the gap since CMS uses
>> this to copy objects. Decoupled set_klass and set_klass_gap in the
>> case of compressed oops.
>> Changed FreeChunk and associated code in SA.
>> Performance results looked very good(not provided). Thanks to jmasa
>> and ramki for their analysis, discussion of the change and prereview.
>> Webrev: http://webrev.invokedynamic.info/coleenp/6687581/
>> Fix verified: y
>> Testing: nsk stress, sajdi and my sanity testlists with
>> Reviewed-by: <your name here>
More information about the hotspot-runtime-dev