RFR (S): G1: Fix bug with compressed oops on x86_64 and sparc

John Cuthbertson john.cuthbertson at oracle.com
Tue Apr 16 17:21:15 UTC 2013


Hi Mikael,

Thanks for submitting the CR. But we should move it back to GC. We are 
responsible for the barrier code.

Martin: Thanks for finding this. I'll review you the fix. How did you 
find it? Do you have a test case? The reason I ask is because we haven't 
seen many missing RSet entry type of errors (December was the last IIRC).

JohnC

On 4/16/2013 2:40 AM, Mikael Gerdin wrote:
> Martin,
>
> (CC:ed runtime)
>
> On 2013-04-16 10:38, Doerr, Martin wrote:
>> Hi all,
>>
>> we found a G1 bug in the template interpreter on x86_64 and sparc with
>> compressed Oops.
>>
>> “do_oop_store” performs a “store_heap_oop” which compresses the input
>> register.
>>
>> This compressed Oop is passed to the succeeding g1_write_barrier_post,
>> which is wrong.
>>
>> Correctly, g1_write_barrier_post needs the uncompressed Oop for the heap
>> region crossing check.
>>
>> This fix preserves the uncompressed Oop in a register which gets passed
>> to the g1_write_barrier_post:
>>
>> http://cr.openjdk.java.net/~goetz/webrevs/g1-cOops_bug/
>>
>> Please supply a bug id and review this change.
>
> I filed JDK-8012335 for this. I filed it on hotspot/runtime since I 
> think that most of the GC team are not that familiar with the 
> interpreter code.
>
> Unfortunately I know too little about the interpreter to review this 
> but your argument sounds reasonable to me.
>
> /Mikael
>
>>
>> Kind regards,
>>
>> Martin
>>




More information about the hotspot-gc-dev mailing list