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