On Thu, 19 Feb 2026 19:33:16 GMT, Chen Liang <[email protected]> wrote:

>> VarHandle reflectively checks if a class has oops (and does it incorrectly 
>> by not filtering static fields). This information is easily accessible from 
>> acmp maps, and we should use that instead of spinning our custom logic.
>
> Chen Liang has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   interface-typed fields were using atomic flat VHs ???

We want to keep the encoding of acmp_maps - which is highly implementation 
dependent - in as few places as possible.  Keeping it in native code or in as 
small a number of classes as possible is better for maintenance.  

Can you move this method to ValueObjectMethods as that class must already 
decode the acmp_maps for `isSubstitutable`?

src/java.base/share/classes/jdk/internal/value/ValueClass.java line 66:

> 64:         int[] map = Unsafe.getUnsafe().getFieldMap(c);
> 65:         int nbNonRef = map[0];
> 66:         return nbNonRef * 2 + 1 < map.length;

This method encodes the acmp map layout in a second place in Java.  The first 
being in ValueObjectMethods.  Rather than propagating this encoding, can we 
move this method to ValueObjectMethods so the encoding is kept in one place?

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

Changes requested by heidinga (no project role).

PR Review: 
https://git.openjdk.org/valhalla/pull/2143#pullrequestreview-3832810721
PR Review Comment: 
https://git.openjdk.org/valhalla/pull/2143#discussion_r2833898595

Reply via email to