[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