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