Please review 6687581: Make CMS work with compressed oops

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Thu May 22 11:45:40 PDT 2008


Vladimir Kozlov wrote:
> 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.

It may be the cause of 6696264: assert("narrow oop can never be zero").
If GC sees 0 length it can assume that the next object is start
after this array header and as result it can get 0 klass.

Thanks,
Vladimir

> 
> Thanks,
> Vladimir
> 
> Vladimir Kozlov wrote:
>> Coleen,
>>
>> 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.
>>
>> Thanks,
>> Vladimir
>>
>> 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 
>>> CMS+compressedoops.
>>>          runthese
>>>          refworkload/GCOld
>>> Reviewed-by: <your name here>



More information about the hotspot-runtime-dev mailing list