Skip to content

(0.54) Use AArch64 IPC register for indirect branches in JIT runtime #22342

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 31, 2025

Conversation

0xdaryl
Copy link
Contributor

@0xdaryl 0xdaryl commented Jul 31, 2025

The macro BRANCH_VIA_VMTHREAD in the JIT runtime uses the x8 register to perform an indirect branch to an arbitrary function. However, this macro may be used in contexts where it is not safe to clobber x8.

Use the conventional AArch64 ABI register x16 for this purpose instead. The JIT does not register assign x16 so there are no conflicts.

Fixes: #21824

Backport #22339

The macro `BRANCH_VIA_VMTHREAD` in the JIT runtime uses the `x8` register to
perform an indirect branch to an arbitrary function. However, this macro may be
used in contexts where it is not safe to clobber `x8`.

Use the conventional AArch64 ABI register `x16` for this purpose instead. The
JIT does not register assign `x16` so there are no conflicts.

Signed-off-by: Daryl Maier <[email protected]>
@pshipton pshipton merged commit 56ff711 into eclipse-openj9:v0.54.0-release Jul 31, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants