On Wed, 29 May 2024 15:03:15 GMT, Sean Gwizdak <d...@openjdk.org> wrote:
>> src/java.base/share/classes/java/lang/reflect/Method.java line 99: >> >>> 97: private Method root; >>> 98: // Hash code of this object >>> 99: private int hash; >> >> We can declare this field `@Stable`, like the `methodAccessor`. > > This was something that I tried and I observed a performance regression on > the ARM platform that I was testing. From my understanding, `@Stable` tells > the compiler to trust the contents of this field which is only given when the > field holder is a known constant. This is generally true for cases like > `Enums` but not usually for `Method`. > > > Benchmark Mode Cnt Score Error Units > # Intel Skylake > MethodHashCode.benchmarkHashCode avgt 5 1.113 ± 1.146 ns/op > # Arm Neoverse N1 > MethodHashCode.benchmarkHashCode avgt 5 3.204 ± 0.001 ns/op Interesting, don't know about hotspot internals so I can't diagnose the exact cause of this regression. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/19433#discussion_r1619080123