On Mon, 6 Jun 2022 13:34:27 GMT, liach <d...@openjdk.java.net> wrote:

>> These fields can only be written once besides the default values, but they 
>> don't have to be written in the static initializer or constructor. So when a 
>> non-zero hash code is written, it's cached as if it's a final field. For a 
>> zero value, it would always undergo extra calculations like before and write 
>> multiple times, but the writes don't matter as it would only write zero, 
>> which would not yield false hash code if a previously written 0 value is 
>> cached.
>
>> Shouldn't the fields annotated with `@Stable` be `final` as well?
> 
> You might have seen `@Stable final` fields. Those are only meaningful for 
> arrays, where such caching happens at each array index. For non-arrays, 
> `@Stable final` is simply equivalent to `final`, and simple `@Stable` acts as 
> what I said above.

Done!

-------------

PR: https://git.openjdk.java.net/jdk/pull/9041

Reply via email to