RFR (S) 8229416: Shenandoah: Demote or remove ShenandoahOptimize*Final optimizations

Roman Kennke roman at kennke.org
Mon Aug 12 16:21:11 UTC 2019


> RFE:
>   https://bugs.openjdk.java.net/browse/JDK-8229416
>   https://cr.openjdk.java.net/~shade/8229416/webrev.01/
> 
> There are three Shenandoah optimizations at the moment:
>  ShenandoahOptimizeStaticFinals (enabled by default)
>  ShenandoahOptimizeInstanceFinals (disabled by default)
>  ShenandoahOptimizeStableFinals (disabled by default)
> 
> The last two are known to break some programs, and they are definitely incorrect in
> post-LRB/post-nofwdptr world, where exposing the from-space object with unusual markword would wreck
> some havoc. These should be removed.

That is ok by me.

> The first optimization is eliminating barriers on constants, that are handled separately, and never
> get exposed as from-space objects. We should keep that optimization on, but to add future debugging,
> we would want to keep the flag as diagnostic.

I believe this optimization actually does nothing (interesting). C2
already optimizes access to static-finals to inlined constants, and we
eliminate barriers on inlined constants. We might want to check & verify
this, but I strongly suspect this optimization is actually a no-op (at
least in most/all interesting cases).

Roman



More information about the shenandoah-dev mailing list