Integrated: 8293474: RISC-V: Unify the way of moving function pointer
Fei Yang
fyang at openjdk.org
Thu Sep 8 01:17:48 UTC 2022
On Wed, 7 Sep 2022 08:36:49 GMT, Fei Yang <fyang at openjdk.org> wrote:
> Currently, there are two different ways of moving function pointer on riscv with either 'li' or 'mv' assembler functions.
> For example, in file shenandoahBarrierSetAssembler_riscv.cpp, we use 'li' function:
> li(ra, (int64_t)(uintptr_t)ShenandoahRuntime::load_reference_barrier_strong_narrow)
>
> While in file templateInterpreterGenerator_riscv.cpp, we use 'mv' function:
> mv(t1, CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans))
>
> Use of 'mv' here calls 'movptr' and emits fixed length instruction sequence, which is neither necessary nor optimal compared with use of 'li'. This changes to use 'li' instead of 'movptr' to implement 'mv' and unifies the way of moving function pointer.
>
> Testing: Passed Tier1 test on Linux-riscv64 SiFive Unmatched board.
This pull request has now been integrated.
Changeset: fc5f97fe
Author: Fei Yang <fyang at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/fc5f97fe379825cb927666ae26aef00082cfae56
Stats: 31 lines in 3 files changed: 2 ins; 10 del; 19 mod
8293474: RISC-V: Unify the way of moving function pointer
Reviewed-by: yadongwang, fjiang, shade
-------------
PR: https://git.openjdk.org/jdk/pull/10194
More information about the hotspot-dev
mailing list