RFR: 8255691: Shenandoah: Invoke native-LRB only on non-strong refs [v2]

Zhengyu Gu zgu at openjdk.java.net
Fri Oct 30 18:44:10 UTC 2020


On Fri, 30 Oct 2020 18:41:34 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

>> The way that current native LRB is implemented is wrong (but non-fatal) and misleading. It's purpose is to prevent resurrection of unreachable non-strong references, and it should only be invoked on non-strong references, not all native references. This distinction will become even more important once we get concurrent reference processing: then we also want to invoke this barrier on referent-loads.
>> 
>> This changes the runtime-part of native-LRB so that it is only invoked when it's invoked with non-strong reference decorator. Otherwise it acts as regular LRB.
>> 
>> Testing: hotspot_gc_shenandoah
>
> Roman Kennke has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Fix condition in SBS::use_load_reference_barrier_native()
>  - Invoke native LRB only on non-strong native refs from interpreter and compiler too

Just a quick scan. 
We probably should also rename ShenandoahRuntime::load_reference_barrier_native() to something like load_reference_barrier_on_weak()(?)  also BS::use_load_reference_barrier_native()

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

PR: https://git.openjdk.java.net/jdk/pull/961


More information about the shenandoah-dev mailing list