> 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

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/24887/files
  - new: https://git.openjdk.org/jdk/pull/24887/files/f6503142..f45160e7

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=24887&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=24887&range=00-01

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/24887.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24887/head:pull/24887

PR: https://git.openjdk.org/jdk/pull/24887

Reply via email to