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