RFR: 8293007: riscv: optimize nmethod entry barrier
Aleksey Shipilev
shade at openjdk.org
Mon Aug 29 11:29:11 UTC 2022
On Sat, 27 Aug 2022 14:54:18 GMT, Yadong Wang <yadongwang at openjdk.org> wrote:
> https://bugs.openjdk.org/browse/JDK-8290700 introduced a faster nmethod entry barrier: a out-of-line stub to the entry barriers of C2 methods, and also a concurrent-data-and instruction-patching barrier.
> Porting loom and generational ZGC are both under development in progress in riscv port project, and we brought the similar modification to make things smooth.
>
> Tier1 passed on unmatched, and also full jtreg tests tested on qemu user mode without new failures.
Looks okay with minor comments.
src/hotspot/cpu/riscv/gc/g1/g1BarrierSetAssembler_riscv.cpp line 161:
> 159: __ bind(runtime);
> 160:
> 161: __ push_call_clobbered_registers();
So this looks like a bugfix? https://mail.openjdk.org/pipermail/riscv-port-dev/2022-August/000601.html
The issue and PR should probably reflect that then.
src/hotspot/cpu/riscv/gc/shared/barrierSetAssembler_riscv.cpp line 192:
> 190:
> 191: void BarrierSetAssembler::clear_patching_epoch() {
> 192: _patching_epoch = 0;
Don't we want `Atomic::store(&_patching_epoch, 0)` here?
src/hotspot/cpu/riscv/gc/shared/barrierSetAssembler_riscv.cpp line 224:
> 222: // which means there isn't really any need for any fencing for neither
> 223: // data nor instruction modification happening concurrently. The
> 224: // instruction patching is synchronized with glocal icache_flush() by
"global"?
src/hotspot/cpu/riscv/gc/shared/barrierSetNMethod_riscv.cpp line 204:
> 202: // are read in the opposite order, such that the load of the nmethod guard
> 203: // acquires the patching epoch. This way, the guard is guaranteed to block
> 204: // entries to the nmethod, util it has safely published the requirement for
"until"?
-------------
Marked as reviewed by shade (Reviewer).
PR: https://git.openjdk.org/jdk/pull/10056
More information about the shenandoah-dev
mailing list