On Fri, 13 Sep 2024 17:14:17 GMT, Shaojin Wen <[email protected]> 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
>
> Shaojin Wen has updated the pull request with a new target base due to a
> merge or a rebase. The pull request now contains six commits:
>
> - Merge remote-tracking branch 'upstream/master' into
> optim_classfile_loadconstant_2020408
>
> # Conflicts:
> #
> src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
> - Merge remote-tracking branch 'upstream/master' into
> optim_classfile_loadconstant_2020408
>
> # Conflicts:
> # src/java.base/share/classes/java/lang/classfile/CodeBuilder.java
> - comments
> - fix comment
> - since 24
> - optimize loadConstant
src/java.base/share/classes/java/lang/classfile/CodeBuilder.java line 628:
> 626:
> 627: /**
> 628: * Generate an instruction pushing a constant int value onto the
> operand stack.
@wenshao After offline discussion with @kevinb9n, we think we should add
another sentence in the API specification:
This is identical to {@link #loadConstant(ConstantDesc)
loadConstant(Integer.valueOf(value))}.
And repeat this for long, float, and double versions (with
`Long.valueOf(value)` etc.)
This avoids confusions around this API.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20761#discussion_r1759413792