RFR: 8320697: RISC-V: Small refactoring for runtime calls

Robbin Ehn rehn at openjdk.org
Tue Nov 28 08:38:06 UTC 2023


On Sun, 26 Nov 2023 10:52:18 GMT, Feilong Jiang <fjiang at openjdk.org> wrote:

> Hi, please review this refactoring for runtime calls.
> Major changes:
> 1. Unified the runtime calls with the existing MacroAssembler::rt_call. This will remove the duplicate code like `relocate(target.rspec() [&] {...}` to emit uncompressed instructions.
> 2. Removed MacroAssembler::far_branches and made the call sites default to far branches. `branch_range` is 1MB for riscv, and `ReservedCodeCacheSize` will always bigger than `branch_range` in practice. We should remove this unnecessary check and simplify the code logic.
> 3. Renamed MacroAssembler::la_patchable with MacroAssembler::auipc making it explicit that this will emit pc-relative addressing code.
> 4. `far_call` in `rt_call` should use `tmp` instead of the default temporary register `t0`
> 
> 
> Testing:
> - [x] Tier1-3 tested on hifive unmatched board (release)
> - [x] Run non-trivial benchmark workloads (fastdebug)

`Renamed MacroAssembler::la_patchable with MacroAssembler::auipc making it explicit that this will emit pc-relative addressing code.`

First, above is not true, as it may emit movptr, it's now an implicit movptr instead. When you thought you were getting auipc.
Secondly auipc is not a mnemonic AFAIK, it means just the instruction auipc. Having it as both is confusing.
Third the one version is now called "la" while the other one is called "auipc" ?

Sorry, but this part is worse now in IMHO.

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

PR Comment: https://git.openjdk.org/jdk/pull/16816#issuecomment-1829335027


More information about the hotspot-compiler-dev mailing list