RFR: 8307149: MethodHandles.arrayConstructor can be cached
Chen Liang
liach at openjdk.org
Thu May 4 23:36:16 UTC 2023
This patch migrates `MethodHandles::arrayConstructor`, added in Java 9 as a hotfix to the incorrect constructor found on arrays via Lookup, to share the array access caching features. The result is that calling `MethodHandles.arrayConstructor` to create method handles is much faster.
Oracle JDK 20:
Benchmark Mode Cnt Score Error Units
MethodHandlesArrayConstructor.createWithAnewarray avgt 15 2.739 ± 0.058 ns/op
MethodHandlesArrayConstructor.createWithMethodHandle avgt 15 3.313 ± 0.041 ns/op
MethodHandlesArrayConstructor.methodHandleCreation avgt 15 61.874 ± 0.397 ns/op
This patch:
Benchmark Mode Cnt Score Error Units
MethodHandlesArrayConstructor.createWithAnewarray avgt 15 3.067 ± 0.026 ns/op
MethodHandlesArrayConstructor.createWithMethodHandle avgt 15 3.699 ± 0.042 ns/op
MethodHandlesArrayConstructor.methodHandleCreation avgt 15 1.447 ± 0.004 ns/op
-------------
Commit messages:
- bug
- 8307149: MethodHandles.arrayConstructor can be cached
Changes: https://git.openjdk.org/jdk/pull/13819/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13819&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8307149
Stats: 126 lines in 4 files changed: 106 ins; 5 del; 15 mod
Patch: https://git.openjdk.org/jdk/pull/13819.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/13819/head:pull/13819
PR: https://git.openjdk.org/jdk/pull/13819
More information about the core-libs-dev
mailing list