[lworld] RFR: 8245584: [lworld] LW3 core reflection update

Mandy Chung mchung at openjdk.java.net
Fri May 22 16:48:48 UTC 2020


On Fri, 22 May 2020 13:12:36 GMT, Roger Riggs <rriggs at openjdk.org> wrote:

>> This patch updates the core reflection for the new language model for inline classes.
>> 
>> - `Class::isInlineClass` returns true for inline classes
>> - `Class::valueType` returns the value projection of an inline class
>> - `Class::referenceType` returns the reference projection if it's an inline class,
>>     or this class if it's not an inline class
>> 
>> If this class has no val type or ref type, `Class::valueType` and `Class::referenceType`
>> return an empty `Optional`.   We can re-examine  if we should modernize Class API shape
>> where  we can rather than holding to the tradition.
>> 
>> I updated TestIntrinsics.java to use the new APIs for now to keep it compiled.
>> This test will be updated when the intrinsification of the old API `Class::asPrimaryType`
>> and `Class:asIndirectType` is removed.
>
> src/java.base/share/classes/jdk/internal/org/objectweb/asm/Type.java line 674:
> 
>> 673:             } else {
>> 674:                 stringBuilder.append('L');
>> 675:             }
> 
> This could be:
> `stringBuilder.append(IsInlineClass(currentClass) ? 'Q' : 'L');`
> 
> There may be a usefor a utility function that  returns Q or L as appropriate, it appears a few time.

`Class::descriptorString` should be used for the cases when it has a `Class` object.

`ProxyGenerator` and `AccessorGenerator` should be updated to use `Class::descriptorString` and `TypeDescriptor` API
where it's appropriate.  I suggest to update these classes in jdk/jdk.  I will file a JBS issue to track this.

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

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


More information about the valhalla-dev mailing list