On Tue, 8 Oct 2024 17:35:32 GMT, Claes Redestad <redes...@openjdk.org> wrote:
>> Shaojin Wen has updated the pull request incrementally with one additional >> commit since the last revision: >> >> Lazy initialization of ARG_NAME_CACHE > > src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java > line 193: > >> 191: String argName = i < ARG_NAME_CACHE_SIZE ? ARG_NAME_CACHE[i] : >> null; >> 192: if (argName == null) { >> 193: argName = "arg$".concat(Integer.toString(i + 1)); > > With `Integer.toString` in the mix perhaps just as well keep this as a > standard concat? > Suggestion: > > argName = "arg$" + (i + 1); New bytecode in last commit's `computeArgName`: 0: ldc #186 // String arg$ 2: iload_0 3: iconst_1 4: iadd 5: invokestatic #188 // Method java/lang/Integer.toString:(I)Ljava/lang/String; 8: invokevirtual #193 // Method java/lang/String.concat:(Ljava/lang/String;)Ljava/lang/String; 11: areturn Old bytecode in constructor: 222: iload 11 224: new #150 // class java/lang/StringBuilder 227: dup 228: invokespecial #152 // Method java/lang/StringBuilder."<init>":()V 231: ldc #155 // String arg$ 233: invokevirtual #157 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 236: iload 11 238: iconst_1 239: iadd 240: invokevirtual #161 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder; 243: invokevirtual #164 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; 246: aastore 247: aload_0 I believe using concat is cleaner. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/21399#discussion_r1792297029