JDK-8210497 : [PPC64] Vector registers not saved across safepoint
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 11,12
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • CPU: ppc
  • Submitted: 2018-09-07
  • Updated: 2019-02-12
  • Resolved: 2018-09-12
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 11
Related Reports
Relates :  
Relates :  
While testing JDK-8208171, we noticed that the RegisterSaver misses code to save and restore the vector registers which are used by C2 compiler. "poll_type == POLL_AT_VECTOR_LOOP" needs to get supported for the vector safepoint handler blob.
[~mdoerr] Martin, could you please verify the fix and close the bug w/ the corresponding status?

Fix Request JDK11 already uses vector registers on PPC64. As stated above, C2 compiler may potentially place a safepoint into a live range of vector registers. Hitting the safepoint may currupt these registers. Fix has been tested in JDK12 together with other changes which hit this case so the fix has been tested. No regression was observed. The patch applies cleanly.

JDK11 only uses a very small subset of vector nodes (load, store, replicate). It's unclear if graph patterns can get generated which contain a safepoint within a live range of a vector register. As workaround, SuperwordUseVSX can get switched off. Current plan is to support POLL_AT_VECTOR_LOOP in jdk12 and backport the change to 11u.