On Sat, 26 Apr 2025 23:47:01 GMT, Chen Liang <li...@openjdk.org> wrote:

>> Currently, we are not generating all possible field lambda forms.
>> 
>> Field lambda forms have these dimensions:
>> - get/set
>> - instance/static/static+class init barrier
>> - plain/volatile
>> - 8 primitive types, no-cast object, object with cast
>> 
>> Bringing to a total of 2 × 3 × 2 × 10 = 120 lambda forms.
>> 
>> Previously, the ones with init barrier or object with cast types were not 
>> generated due to spamming the Kind enum. In retrospect, I believe skipping 
>> the object with cast form is a poor choice - tons of Java fields are using 
>> non-interface types. Also seems the volatile accessors were omitted in 
>> InvokerBytecodeGenerator, which made their pregen useless.
>> 
>> I have utilized erased method types to distinguish forms - get/set, 5 basic 
>> types, and instance/static can be distinguished by the types, so the Kind 
>> enums now only represent init, volatile, and non-basic types (byte, char, 
>> short, boolean, casts), bringing the total constants to 24 down from 40 
>> previously.
>> 
>> In the long run, we should investigate update `Kind` to allow flexible 
>> representations - an enum is too restrictive especially with the erased 
>> types.
>
> Chen Liang has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   use var

Marked as reviewed by jvernee (Reviewer).

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

PR Review: https://git.openjdk.org/jdk/pull/24887#pullrequestreview-2805208547

Reply via email to