RFR: 8284579: Improve VarHandle checks for interpreter
Claes Redestad
redestad at openjdk.java.net
Fri Apr 8 11:54:06 UTC 2022
A few additional enhancements aiming to improve VH performance in the interpreter:
- Flatten `TypeAndInvokers`: adds a pointer to `VarHandle` (a small increase 40->48) but removes an object and an indirection on any instance actually used - and might avoid allocating the `MethodHandle[]` unnecessarily on some instances
- Have `checkExactAccessMode` return the directness of the `VarHandle` so that we can avoid some `isDirect` method calls.
Baseline
Benchmark Mode Cnt Score Error Units
VarHandleExact.exact_exactInvocation avgt 30 478.324 ? 5.762 ns/op
VarHandleExact.generic_exactInvocation avgt 30 392.114 ? 1.644 ns/op
VarHandleExact.generic_genericInvocation avgt 30 822.484 ? 1.865 ns/op
Patched
Benchmark Mode Cnt Score Error Units
VarHandleExact.exact_exactInvocation avgt 30 437.704 ? 5.320 ns/op
VarHandleExact.generic_exactInvocation avgt 30 374.512 ? 3.154 ns/op
VarHandleExact.generic_genericInvocation avgt 30 757.054 ? 1.237 ns/op
-------------
Commit messages:
- Various improvements to VarHandle startup
Changes: https://git.openjdk.java.net/jdk/pull/8160/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8160&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8284579
Stats: 232 lines in 4 files changed: 18 ins; 23 del; 191 mod
Patch: https://git.openjdk.java.net/jdk/pull/8160.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/8160/head:pull/8160
PR: https://git.openjdk.java.net/jdk/pull/8160
More information about the core-libs-dev
mailing list