RFR: keep read barrier on final field access

Aleksey Shipilev shade at redhat.com
Mon Oct 23 08:52:16 UTC 2017


On 10/23/2017 10:46 AM, Roman Kennke wrote:
> Am 23.10.2017 um 09:51 schrieb Roland Westrelin:
>> As discussed in [1]:
>>
>> http://cr.openjdk.java.net/~roland/shenandoah/rbonfinalinstancefield/webrev.00/
>>
>> Roland.
>>
>> [1] http://mail.openjdk.java.net/pipermail/shenandoah-dev/2017-October/004063.html
> 
> This has a few too many negations inside:
> 
> + if (!ShenandoahOptimizeFinals || (!field->is_static() && !ShenandoahOptimizeInstanceFinals) ||
> + (!field->is_final() && !field->is_stable())) {
> 
> My head is twisting trying to think about it.
> 
> If I understand it correctly, it does not emit RBs when ShenandoahOptimizeFinals is set, regardless
> if ShenandoahOptimizeInstanceFinals, right? I don't think this is what we want. Maybe we should
> rename ShenandoahOptimizeFinals to ShenandoahOptimizeStaticFinals and turn the condition around to
> make it easier to reason about it?

Or, split it three ways:

if ((ShenandoahOptimiseStaticFinals && field->is_static()) ||
    (ShenandoahOptimizeInstanceFinals && field->is_final()) ||
    (ShenandoahOptimizeStableFinals && field->is_stable())

...and invert the whole thing if needed.

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list