RFR [sh/8u]: Correct order between load, LRB and membar nodes
Roman Kennke
rkennke at redhat.com
Mon Oct 28 12:39:14 UTC 2019
hi Aleksey,
> On 10/28/19 1:30 PM, Roman Kennke wrote:
>> A test failed after recent LRB backport which is caused by wrong
>> ordering of load, LRB and trailing membar. Currently the membar feeds
>> off the LRB, but it should really have the raw load as its input so that
>> membars don't participate in the data flow analysis that we do in our
>> LRB optimizations.
>>
>> The fix is in Unsafe accessor. This mimics how it's already done for
>> getfield (in parse3.cpp) and also in later releases.
>>
>> Webrev:
>> http://cr.openjdk.java.net/~rkennke/lrb-membars/webrev.00/
>
> Looks fine.
>
> *) Why do we need "ld" variable here again?
> 2779 Node* ld = load;
This is so that we can push the LRBed value, but keep the non-LRB value
for the membar-path.
> *) Is the order w.r.t. pre_barrier okay? New patch exposes non-LRB-ed load to pre_barrier on
> T_OBJECT path.
The pre-barrier is only applied on stores, the LRB only on loads.
> *) Is it fine to LRB the result of ConvX2UL from T_ADDRESS path?
I think so, the LRB is only applied on T_OBJECT and T_ARRAY.
Yes I know, it's not the most obvious way to express this, but it's the
least intrusive I think. That's where the GC interface makes things much
cleaner/clearer.
Roman
More information about the shenandoah-dev
mailing list