RFR: 8365926: RISC-V: Performance regression in renaissance (chi-square) [v2]

Hamlin Li mli at openjdk.org
Tue Sep 2 12:50:46 UTC 2025


On Mon, 1 Sep 2025 14:35:38 GMT, Robbin Ehn <rehn at openjdk.org> wrote:

>> src/hotspot/cpu/riscv/nativeInst_riscv.cpp line 110:
>> 
>>> 108:   // We changed instruction stream
>>> 109:   if (mt_safe) {
>>> 110:     OrderAccess::release();
>> 
>> If we have relese here, do we still need the release in `set_stub_address_destination_at`?
>
> From JBS entry, the point is to do it in a sane order:
> 
> The release in make_jal_opt so to make sure the store to instruction stream happens before I-cache flush.
> 
> 1: store destination to stub
> 2: release
> 3: store destination to instruction stream
> 4: release
> 5: i-cache flush

I don't see a detailed discussion about why there needs to be 2 `release`.
Seems the `2: release` is redundant? does a single release (step 4) after step 3 work as well?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26944#discussion_r2315984966


More information about the hotspot-compiler-dev mailing list