SAP 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: