RFR: 8362504: AArch64: Replace MOVZ+MOVK+MOVK with ADRP+ADD [v2]

Fei Gao fgao at openjdk.org
Tue Aug 19 10:44:12 UTC 2025


> If the relocation or target address is guaranteed to reside within the CodeCache, we can safely replace a `movz + movk + movk` sequence with a more compact and efficient `adrp + add` instruction pair.
> 
> In `MacroAssembler::mov(Register r, Address dest)`, this replacement can be applied if any of the following rules hold:
> 
> 1. The relocation type indicates that the address resides within the CodeCache and the necessary patching logic is provided in `fix_relocation_after_move()`.
> 2. The target address is fixed (i.e., does not require relocation) and is within the reachable range for `adrp`.
> 
> The patch performs the filtering in `is_relocated_within_codecache()` and `is_adrp_reachable()` to ensure this optimization is applied safely and selectively.

Fei Gao has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:

 - Disable reachability-based optimization during AOT code dumping
 - Merge branch 'master' into replace-mov-with-adrp
 - 8362504: AArch64: Replace MOVZ+MOVK+MOVK with ADRP+ADD
   
   If the relocation or target address is guaranteed to reside within
   the CodeCache, we can safely replace a `movz + movk + movk`
   sequence with a more compact and efficient `adrp + add`
   instruction pair.
   
   In `MacroAssembler::mov(Register r, Address dest)`, this
   replacement can be applied if any of the following rules hold:
   
   1. The relocation type indicates that the address resides within
   the CodeCache and the necessary patching logic is provided in
   `fix_relocation_after_move()`.
   2. The target address is fixed (i.e., does not require relocation)
   and is within the reachable range for `adrp`.
   
   The patch performs the filtering in `is_relocated_within_codecache()`
   and `is_adrp_reachable()` to ensure this optimization is applied
   safely and selectively.

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/26653/files
  - new: https://git.openjdk.org/jdk/pull/26653/files/3ca70c87..3540e45d

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=26653&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26653&range=00-01

  Stats: 15535 lines in 447 files changed: 8407 ins; 5296 del; 1832 mod
  Patch: https://git.openjdk.org/jdk/pull/26653.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26653/head:pull/26653

PR: https://git.openjdk.org/jdk/pull/26653


More information about the hotspot-dev mailing list