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