RFR: 8339217: Optimize ClassFile API loadConstant [v5]
Chen Liang
liach at openjdk.org
Fri Sep 13 19:54:12 UTC 2024
On Fri, 13 Sep 2024 17:14:17 GMT, Shaojin Wen <swen at 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
>
> 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
More information about the core-libs-dev
mailing list