JDK-8196136 : AArch64: Correct register use in patch for JDK-8195685
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 9.0.4,10
  • Priority: P1
  • Status: Closed
  • Resolution: Fixed
  • OS: linux
  • CPU: aarch64
  • Submitted: 2018-01-25
  • Updated: 2021-02-01
  • Resolved: 2018-01-25
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 10 JDK 11 JDK 9 Other
10 b42Fixed 11Fixed 9.0.4Fixed openjdk8u292Fixed
Related Reports
Relates :  
Relates :  
Description
itable stubs must not use java argument registers as scratch registers

Comments
Thanks Vladimir I will now push to jdk10 and also jdkdev/jdk. But not to jdkdev/hs :-)
25-01-2018

Fix request approved for JDK 10 by group lead.
25-01-2018

The patch for JDK-8195685 uses aarch64 register r0 as a scratch register in generated itable stubs. This causes a potentially fatal error in the rare, special case where the stub is used to invoke an interface with 7 arguments. The 7th argument register r_jarg7 is an alias for r0. The generated stub needs to use a free non java argument register e.g. r19.
25-01-2018

Fix Request: Why? Fixing this bug is critical because without it the AArch64 build can crash if Java code calls an interface method with 7 or more arguments via an itable stub. For example, this happens in one of the the maven plugins used to run jcstress tests. What? The fix tweaks the patch to JDK-8195685 to avoid argument register corruption Risk? The risk is low because it has been tested by successfully rerunning the maven build for jcstress correctly and also a variety of Java programs on Aarch64. Reviewers? It has been reviewed by Andrew Haley. webrev (for jdk10 and jdkdev) is here: http://cr.openjdk.java.net/~adinn/8196136/webrev.02
25-01-2018