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

Mikael Gerdin mikael.gerdin at oracle.com
Tue Apr 16 02:40:40 PDT 2013


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-runtime-dev mailing list