On Mon, 17 Apr 2023 13:49:11 GMT, Aleksey Shipilev <sh...@openjdk.org> wrote:

>> From that impl note it seemed like it was a big deal for hash code to never 
>> return 0 for an object. Could you maybe de-emphasize the importance of that 
>> HotSpot behavior in the note?
>
> All right, we can change "This allows to treat zero as the marker..." to 
> "This makes zero a convenient marker...", I think?

To me, the proposed implementation looks similar to that of String::hashCode 
before Compact Strings (JEP 254).

The interesting detail here is the fact that unlike String::hashCode, which can 
legitimately return 0, Object::hashCode cannot, at least in HotSpot. This is 
great news, because to be performant, java.lang.Enum does not need to be 
bloated with extra mechanics, such as that boolean `hashIsZero` introduced for 
java.lang.String in 8221836: Avoid recalculating String.hash when zero.

If the essence of that can be compressed to a few simple sentences and possibly 
moved to an inline comment in Enum::hashCode, that _might_ be better.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13491#discussion_r1168853799

Reply via email to