RFR: 8339214: Remove misleading CodeBuilder.loadConstant(Opcode, ConstantDesc) [v2]
Chen Liang
liach at openjdk.org
Sat Aug 31 12:26:20 UTC 2024
On Sat, 31 Aug 2024 10:16:57 GMT, ExE Boss <duke at openjdk.org> wrote:
>> src/jdk.jfr/share/classes/jdk/jfr/internal/EventInstrumentation.java line 679:
>>
>>> 677: getEventConfiguration(blockCodeBuilder);
>>> 678: // stack: [EW] [EW] [EC]
>>> 679: blockCodeBuilder.loadConstant(eventTypeId);
>>
>> Does this means an int (single slot) can be pushed if the event type id happens to be below Integer.MAX_VALUE?
>
> No, because the type of `eventTypeId` is `long`, so the boxed type is `Long`, therefore the only instructions are `LDC2_W`, `LCONST_0`, and `LCONST_1`:
>
> https://github.com/openjdk/jdk/blob/86c4104d86d91fefae3d9dc11e4f2684d29fcde1/src/java.base/share/classes/java/lang/classfile/CodeBuilder.java#L639-L642
No, because int and long are not interchangeable in the jvm. Only subints can be replaced by ints.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20779#discussion_r1739708292
More information about the core-libs-dev
mailing list