On Thu, 30 Mar 2023 20:06:02 GMT, Chen Liang <li...@openjdk.org> wrote:

> This patch optimizes ClassDesc.resolveConstantDesc for array classes. 
> Otherwise, the performance of reference class resolution remain unchanged. 
> https://jmh.morethan.io/?gist=111095eecf7a735fe8c96e4b952b58c1 It also 
> includes a benchmark for MethodTypeDesc resolution, which currently does not 
> yet depend on class desc resolution but can be later optimized if it does 
> switch.

src/java.base/share/classes/java/lang/constant/ConstantUtils.java line 130:

> 128: 
> 129:     static boolean isPrimitiveArray(String 
> referenceTypeDescriptorString) {
> 130:         return 
> referenceTypeDescriptorString.charAt(referenceTypeDescriptorString.length() - 
> 1) != ';';

it also needs to check if it starts with `[`


Suggestion:

        return referenceTypeDescriptorString.startsWith("[") &&  
                  
referenceTypeDescriptorString.charAt(referenceTypeDescriptorString.length() - 
1) != ';';

test/micro/org/openjdk/bench/java/lang/constant/MethodTypeDescResolve.java line 
53:

> 51: @Fork(1)
> 52: @State(Scope.Benchmark)
> 53: public class MethodTypeDescResolve {

Better to separate this benchmark from this PR.   Probably the optimization 
done in [PR 10991](https://github.com/openjdk/jdk/pull/10991) should be a 
separate patch from JDK-8294961 and this benchmark could be included there.

test/micro/org/openjdk/bench/java/lang/constant/ReferenceClassDescResolve.java 
line 120:

> 118:                 return resolveReference(lookup, cd);
> 119:             }
> 120:         },

I think this benchmark doesn't need this case as that's the implementation of 
`resolveConstantDesc`.   Was it there when you developed this fix?   Same for 
MethodTypeDesc benchmark.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13252#discussion_r1153874210
PR Review Comment: https://git.openjdk.org/jdk/pull/13252#discussion_r1153877556
PR Review Comment: https://git.openjdk.org/jdk/pull/13252#discussion_r1153876110

Reply via email to