Mark GPR15 volatile for JIT Helper calls on 64-bit z/OS #22852
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Call from JIT compiled code to JIT helper functions implemented in C
is made using S390CHelperLinkage which prepares the call dispatch
sequecne following the fast XPLINK ABI on z/OS. As per XPLINK GPR15 is
preserved register. In case of Synchronized Virtual Thread, a virtual
thread trying to enter a monitor can be unmounted from the carrier
thread if monitor is bloked, in such it can be mounted to different
carrier thread. From JIT compiled code, such task is done through the
C helper function, where upon mounting, return back to JIT compiled
code would happen from interpreter. For such case, GPR15 is used to
branch back from interpreter. To ensure we do not have any live values
in GPR15, changes in this commit marks GPR15 volatile for
S390CHelperLinkage on 64-bit z/OS. Given that only in case of
synchronized virtual thread which would only available in JDK24 and
newer which is not available on 31-bit JVM, this change is kept
limited to 64-bit z/OS.