On Thu, 16 Apr 2026 23:09:52 GMT, Vladimir Kozlov <[email protected]> wrote:

> Improve startup and warmup time by making optimized native code for an 
> application instantly available when the HotSpot Java Virtual Machine starts. 
> Achieve this by compiling application code to native code in a training run, 
> storing the native code in the [AOT 
> cache](https://openjdk.org/jeps/483#Description) for use in subsequent 
> production runs.
> 
> More details in the [JEP](https://openjdk.org/jeps/544).
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp line 753:

> 751:     ZSetupArguments setup_arguments(masm, stub);
> 752:     __ la(t1, RuntimeAddress(stub->slow_path()));
> 753:     __ jalr(t1);

Or simply: `__ rt_call(stub->slow_path());`, which will be more consistent with 
other places.
There is a similar one in file gc/g1/g1BarrierSetAssembler_riscv.cpp. Reference 
add-on change:

diff --git a/src/hotspot/cpu/riscv/gc/g1/g1BarrierSetAssembler_riscv.cpp 
b/src/hotspot/cpu/riscv/gc/g1/g1BarrierSetAssembler_riscv.cpp
index abcf69e2df09a..aa03a90de60e7 100644
--- a/src/hotspot/cpu/riscv/gc/g1/g1BarrierSetAssembler_riscv.cpp
+++ b/src/hotspot/cpu/riscv/gc/g1/g1BarrierSetAssembler_riscv.cpp
@@ -324,8 +324,7 @@ static void 
generate_c2_barrier_runtime_call(MacroAssembler* masm, G1BarrierStub
     __ mv(c_rarg0, arg);
   }
   __ mv(c_rarg1, xthread);
-  __ mv(t1, runtime_path);
-  __ jalr(t1);
+  __ rt_call(runtime_path);
 }

 void G1BarrierSetAssembler::g1_write_barrier_pre_c2(MacroAssembler* masm,
diff --git a/src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp 
b/src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp
index 9fbc59fe5ce39..11f2585dbe814 100644
--- a/src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp
+++ b/src/hotspot/cpu/riscv/gc/z/zBarrierSetAssembler_riscv.cpp
@@ -749,8 +749,7 @@ void 
ZBarrierSetAssembler::generate_c2_load_barrier_stub(MacroAssembler* masm, Z
   {
     SaveLiveRegisters save_live_registers(masm, stub);
     ZSetupArguments setup_arguments(masm, stub);
-    __ mv(t1, stub->slow_path());
-    __ jalr(t1);
+    __ rt_call(stub->slow_path());
   }

   // Stub exit

src/hotspot/share/code/aotCodeCache.cpp line 3794:

> 3792:     ADD_EXTERNAL_ADDRESS(SharedRuntime::throw_StackOverflowError);
> 3793:     
> ADD_EXTERNAL_ADDRESS(SharedRuntime::throw_delayed_StackOverflowError);
> 3794:     ADD_EXTERNAL_ADDRESS(StubRoutines::crc_table_addr());

Drive-by comment: Should we also list `StubRoutines::crc32c_table_addr()`?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/30778#discussion_r4002921051
PR Review Comment: https://git.openjdk.org/jdk/pull/30778#discussion_r3900870962

Reply via email to