RFR(M) 8222992: Shenandoah: Pre-evacuate all roots
Aleksey Shipilev
shade at redhat.com
Tue Apr 30 14:25:56 UTC 2019
On 4/26/19 3:54 PM, Zhengyu Gu wrote:
>> *) There is a plain store in ShenandoahBarrierSet::AccessBarrier<decorators,
>> BarrierSetT>::oop_load_not_in_heap. First, I wonder if it even makes sense to do it here -- it feels
>> awkward to have writes in "loads". Second, shouldn't that be a CAS, on the off-chance something else
>> is storing the another value?
>
> I think it is a Copy-on-Read semantics, no? I don't think it needs CAS here, since
> load-reference-barrier should return to-space oop, and we should only have one to-space copy.
Yes, but the issue is different. You have the conflicting stores: a) fwd fixup: A' -> A; b) other
store B. What this can do is to store A, overwriting (losing!) the store of B. Rule: the fwd fixups
should always be with CAS, unless you guarantee nothing else is writing.
-Aleksey
More information about the shenandoah-dev
mailing list