RFR (S) 8150180: String.value contents should be trusted
Aleksey Shipilev
aleksey.shipilev at oracle.com
Fri Feb 19 14:07:57 UTC 2016
Hi Peter,
On 02/19/2016 05:05 PM, Peter Levart wrote:
> Your comment in String:
>
> 140 * @implNote Note this field is not {@link Stable}, because we
> want
> 141 * LATIN1 (0) coder to fold too. {@link Stable} would not allow
> that,
> 142 * as it reserves the default value as "not initialized" value.
> 143 * Constant-folding this field is handled internally in VM.
> 144 */
> 145 private final byte coder;
>
>
> Couldn't @Stable final instance fields constant-fold the default value
> too in general? I mean can't it be assumed that the final field has been
> set before JIT kicks in?
We've been over this multiple times, actually. @Stable is not designed
to fold default value -- it is a part of its design to ignore final
fields with default values. Because @Stable is used largely for lazy
initialization, and default value is the important marker in field's
lifecycles.
Cheers,
-Aleksey
More information about the core-libs-dev
mailing list