RFR: keep read barrier on final field access

Roman Kennke rkennke at redhat.com
Mon Oct 23 08:46:15 UTC 2017


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?

Do we want to wire it up with TrustFinalNonStaticFields? I.e. if 
TrustFinalNonStaticFields is set, also set our own flag?

Roman


More information about the shenandoah-dev mailing list