On Fri, 6 Sep 2024 10:01:39 GMT, Claes Redestad <redes...@openjdk.org> wrote:
> - A small portion (~5%) of the instrumented overhead when spinning MH/LF > classes in `InvokeBytecodeGenerator` comes from creating the exact same > `RuntimeVisibleAnnotationsAttribute` for every method. Introducing a couple > of constants has a small but measurable impact. > - `classDesc(MemberName.class)` is called ~8000 times during an OpenJDK > build, `classDesc(MethodType.class)` ~900 - special casing looks profitable > - Class name validation narrowed down, use ReferenceClassDescImpl.ofValidated > - Various minor optimizations helping reduce bytecode size and speed up > interpreter execution src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java line 149: > 147: localsMap[0] = 0; // localsMap has at least one element > 148: for (int i = 1, index = 0; i < localsMap.length; i++) { > 149: Class<?> cl = mt.parameterType(i - 1); Can we use var? var cl = mt.parameterType(i - 1); src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java line 230: > 228: // unique static variable name > 229: String name; > 230: List<ClassData> classData = this.classData; var classData = this.classData; ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/20887#discussion_r1746918308 PR Review Comment: https://git.openjdk.org/jdk/pull/20887#discussion_r1746919127