RFR: 8365265: x86 short forward jump exceeds 8-bit offset in methodHandles_x86.cpp when using Intel APX
Aleksey Shipilev
shade at openjdk.org
Tue Aug 12 06:26:11 UTC 2025
On Mon, 11 Aug 2025 17:38:28 GMT, Srinivas Vamsi Parasa <sparasa at openjdk.org> wrote:
> The goal of this PR is to address the failure caused by x86 forward jump offset exceeding imm8 displacement when running the HotSpot jtreg test `test/hotspot/jtreg/compiler/c2/TestLWLockingCodeGen.java` using Intel APX (on SDE emulator).
>
> This bug triggers an assertion failure in methodHandles_x86.cpp because the assembler emits a short forward jump (imm8 displacement) whose target is more than 127 bytes away, exceeding the allowed range. This appears to be caused by larger stub code size when APX instruction encoding is enabled.
>
> The fix for this issue is to replace the `jccb` instruction with` jcc` in methodHandles_x86.cpp.
Looks good. This is diagnostics code, so performance is not a question.
I think we generally avoid shortening branches over `__ STOP`, for example, which size is generally unpredictable. So this looks in alignment with that tactics. Maybe you want to unshorten the branch at L157 as well.
-------------
Marked as reviewed by shade (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/26731#pullrequestreview-3108735289
More information about the hotspot-compiler-dev
mailing list