On Wed, 25 Sep 2024 19:53:13 GMT, Claes Redestad <[email protected]> wrote:
>> @cl4es discovered that Stack Map generation in ClassFile API uses
>> `componentType` and `arrayType` for `aaload` `aastore` instructions, which
>> are currently quite slow. We can split out array class descriptors from
>> class or interfaces to support faster `arrayType` and `componentType`
>> operations.
>>
>> Tentative, as I currently have no way to measure the actual impact of this
>> patch on the startup performance; however, this made the `ClassDesc`
>> implementations much cleaner.
>
> src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
> line 79:
>
>> 77: private static final ClassDesc CD_LambdaForm_Name =
>> ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/LambdaForm$Name;");
>> 78: private static final ClassDesc CD_LoopClauses =
>> ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/MethodHandleImpl$LoopClauses;");
>> 79: private static final ClassDesc CD_Object_array =
>> CD_Object.arrayType();
>
> I guess `CD_Object.arrayType()` shows up often enough now - even once _in_
> `java.lang.constant.ConstantDescs` - that we might as well pin it down as a
> constant somewhere (`ConstantDescs` is a candidate location, but that will
> take a CSR).
This patch already has a CSR for trivial signature changes. The real difficulty
lies in how we should name our new array class descriptors, `Object_array` or
`ObjectArray` or what else?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20665#discussion_r1775924591