[lworld] RFR: JDK-8247663: [lworld] LambdaMetaFactory should allow an inline value projection type to convert to its reference projection type

Mandy Chung mchung at openjdk.java.net
Wed Jul 1 17:53:56 UTC 2020


This patch fixes `LambdaMetaFactory` to allow inline value projection type to convert to its reference projection type.

`Class::isAssignableFrom` and `Class::asSubclass` are the APIs to determine if a given type can be safely cast to this
Class.

-  Class::isAssignableFrom tests if a given type can be converted to this Class via a widening reference conversion.
- Class::asSubclass tests if a given type can be converted to this Class via a narrowing conversion.

The current thought is to keep  `Class::isAssignableFrom` and `Class::asSubclass` to respect the class file hierarchy
and a cast is needed when converting from `V.val` to `V.ref`.   `LambdaMetaFactory` and other frameworks will need to
extend the type adaptability check to support inline types.

I considered adding `Class::isConvertibleFrom` method but we should wait for more use cases proving the need of such
convenience method.  This check can be done by calling `Class::referenceType` and `Class::valueType`.

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

Commit messages:
 - lambda metafactory supports inline widening/narrowing

Changes: https://git.openjdk.java.net/valhalla/pull/102/files
 Webrev: https://webrevs.openjdk.java.net/valhalla/102/webrev.00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8247663
  Stats: 289 lines in 5 files changed: 284 ins; 1 del; 4 mod
  Patch: https://git.openjdk.java.net/valhalla/pull/102.diff
  Fetch: git fetch https://git.openjdk.java.net/valhalla pull/102/head:pull/102

PR: https://git.openjdk.java.net/valhalla/pull/102


More information about the valhalla-dev mailing list