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

Lalith Suresh github.com+434651+lalithsuresh at openjdk.java.net
Fri Jul 10 02:54:25 UTC 2020


On Wed, 8 Jul 2020 20:26:54 GMT, Mandy Chung <mchung at openjdk.org> wrote:

>> 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`.
>
> Mandy Chung has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev
> excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since
> the last revision:
>  - Merge
>  - revision per Roger's feedback
>  - lambda metafactory supports inline widening/narrowing

test/jdk/valhalla/valuetypes/InlineTypeConversionTest.java line 89:

> 88:         } catch (NullPointerException e) {
> 89:             e.printStackTrace();
> 90:         }

Needn't print stack trace here or below after invoking mh2.

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

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



More information about the valhalla-dev mailing list