RFR: 8160821: VarHandle accesses are penalized when argument conversion is required [v13]

John R Rose jrose at openjdk.org
Fri Jan 23 23:05:30 UTC 2026


On Fri, 23 Jan 2026 20:08:58 GMT, Chen Liang <liach at openjdk.org> wrote:

>> Since access descriptor is created for each VH operation site, we can optimistically cache the adapted method handle in a site if the site operates on a constant VH.  Used a C2 IR test to verify such a setup through an inexact VarHandle invocation can be constant folded through (previously, it was blocked by `asType`)
>
> Chen Liang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Wording update, thanks Jorn

src/java.base/share/classes/java/lang/invoke/VarHandle.java line 2022:

> 2020:     // In a class file, the JVM creates one access descriptor for one (name, type) combination.
> 2021:     // Many call sites in one class can have the same (name, type) combination.
> 2022:     // In this case, they share the same access descriptor.

I love it when, as part of maintenance, informative comments like these are added.  Thanks!

Please add a comment something like this as well:


// Note:  The integers type and mode are proxies for the AccessType and
// AccessMode enumerations, and the access type simply summarizes something
// about the shape of the access mode.  The crucial type here, of the (name, type)
// combination, is the MethodType that decorates the access shape with specific
// strong types for the handle operation inputs and outputs.


I think it was a small faux pas, some time ago, to choose the term `AccessType` instead of `AccessKind`, simply because the term "type" is already disastrously overloaded in our system.  But that’s water under the bridge.  Now we have one more "type" floating around in this neighborhood.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28585#discussion_r2723131985


More information about the hotspot-compiler-dev mailing list