On Thu, 29 Aug 2024 05:11:36 GMT, Chen Liang <li...@openjdk.org> wrote:

>> This is a large method. By splitting it into multiple methods with the same 
>> name, the caller can automatically select based on the different types of 
>> parameters, avoiding this large call that cannot be inlined, which can also 
>> improve startup performance.
>> 
>> * current
>> 
>> CodeBuilder {
>>     default CodeBuilder loadConstant(ConstantDesc value) { ... }
>> }
>> 
>> java.lang.classfile.CodeBuilder::loadConstant (465 bytes)   failed to 
>> inline: callee is too large
>
> src/java.base/share/classes/java/lang/classfile/CodeBuilder.java line 646:
> 
>> 644:         if (value instanceof Float     ) return loadConstant((float)  
>> value);
>> 645:         if (value instanceof Double    ) return loadConstant((double) 
>> value);
>> 646:         else                             return ldc(value);
> 
> I think we need to rearrange this to follow the code style, like:
> 
> if (value instanceof Number) {
>     if (value instanceof Integer i)
>         return loadConstant(i);
>     if (value instanceof Long l)
>         return loadConstant(l);
>     if (value instanceof Float f)
>         return loadConstant(f);
>     if (value instanceof Double d)
>         return loadConstant(d);
> }
> if (value == null || value == ConstantDescs.NULL)
>     return aconst_null();
> return ldc(value);

Many parts of the existing JDK code are written in this style, which looks 
clean and easy to read.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20761#discussion_r1735605374

Reply via email to