On Wed, 25 Sep 2024 19:53:13 GMT, Claes Redestad <redes...@openjdk.org> 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

Reply via email to