RFR: 8306075: Micro-optimize Enum.hashCode [v3]

Aleksey Shipilev shade at openjdk.org
Tue Apr 18 19:35:50 UTC 2023


On Tue, 18 Apr 2023 17:23:54 GMT, ExE Boss <duke at openjdk.org> wrote:

>> `super.hashCode()` is a virtual call. `System.identityHashCode` is the static call. I don't understand where `invokespecial` enters the picture here.
>
> `invokespecial` is used to call instance methods in a non‑virtual manner.
> 
> --------------------------------------------------------------------------------
> 
> Using `super.hashCode()` in `java.lang.Enum` produces the bytecode:
> 
> aload_0;
> invokespecial java/lang/Object.hashCode:()I;

I see. It does not matter here, because for performance, we largely only care about the distinction between virtual/static cases in C2 intrinsic for hashcode.

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

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


More information about the core-libs-dev mailing list