JDK-8012335 : G1: TemplateInterpreter do_oop_store passes a compressed oop to g1_write_barrier_post
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs25
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2013-04-16
  • Updated: 2013-09-18
  • Resolved: 2013-04-18
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 JDK 8 Other
7u40Fixed 8Fixed hs24Fixed
Description
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:
http://cr.openjdk.java.net/~goetz/webrevs/g1-cOops_bug/

Comments
Reviewing fix from SAP.
16-04-2013