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

ExE Boss duke at openjdk.org
Tue Apr 18 17:26:22 UTC 2023


On Tue, 18 Apr 2023 08:34:41 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> Shouldn’t `invokespecial` produce a non‑virtual call as well?
>> 
>> And `this`/`super` can never be `null`.
>
> `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;

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

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


More information about the core-libs-dev mailing list