On Mon, 1 Dec 2025 23:41:04 GMT, Chen Liang <[email protected]> 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:
> 
>   Tweak VH usage in some classes

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

> 2040:             // This is still a hot path if vh is not constant - in this 
> case,
> 2041:             // asType is the bottleneck for constant folding, 
> unfortunately
> 2042:             var result = 
> vh.getMethodHandle(mode).asType(symbolicMethodTypeInvoker);

`mode` and `symbolicMethodTypeInvoker` are part of `AccessDescriptor` while 
`vh` comes as an argument. What guarantees that a cached adapter is compatible 
with `vh` observed during subsequent calls? It means that `vh` shape stays 
exactly the same shape. Is it correct? Would be good to have it validated with 
asserts.

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

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

Reply via email to