On Tue, 8 Oct 2024 18:03:14 GMT, Chen Liang <li...@openjdk.org> wrote:

>> 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.

Irrelevant; idiomatic concatenation is more concise in source and easier to 
read, comprehend and check, so should generally be preferred. That the legacy 
javac concat translatiom is lousy for constant + primitive is a different 
matter.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/21399#discussion_r1792328733

Reply via email to