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

Coleen Phillimore coleen.phillimore at oracle.com
Tue Apr 16 18:54:55 UTC 2013


Well, historically the GC group has added this barrier code to the 
interpreter, but I reviewed this change and it looks fine to me.

I can do the checkin if someone else can review it.  Oh also, is there a 
small jtreg test case that can be added for this?

Thanks,
Coleen

On 04/16/2013 05: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