RFR: 8357220: Introduce a BSMAttributeEntry struct [v5]
Serguei Spitsyn
sspitsyn at openjdk.org
Wed Jun 18 17:55:34 UTC 2025
On Wed, 18 Jun 2025 12:37:07 GMT, Johan Sjölen <jsjolen at openjdk.org> wrote:
>> Hi,
>>
>> The constant pool currently has a lot of methods specific to extracting parts of the operands array. What this array actually is, is a sequence of bootstrap method attribute entries, where each entry has the following components:
>>
>> ```c++
>> struct BSMAE {
>> u2 bootstrap_method_index;
>> u2 argument_count;
>> u2 arguments[argument_count];
>> }
>>
>>
>> We can removes some of these operands array specific methods, and instead allows you to extract BSMAttributeEntrys which you can then use to extract its piece wise components. This makes for a nicer interface, and a bit easier to come into as a reader of the code, as it more closely mirrors the JVMS.
>>
>> Please consider!
>>
>> Testing: Currently GHA, running tier1-tier3
>
> Johan Sjölen has updated the pull request incrementally with two additional commits since the last revision:
>
> - Matias's comments
> - Apply Sergei's comments
src/hotspot/share/oops/constantPool.cpp line 1944:
> 1942: BSMAttributeEntry* e2 = bsm_attribute_entry(idx2);
> 1943: int k1 = e1->bootstrap_method_index();
> 1944: int k2 = cp2->e2->bootstrap_method_index();
I'm kind of confused, this does not look right. It is event not going to be compiled.
It is supposed to be as below:
BSMAttributeEntry* e2 = cp2->bsm_attribute_entry(idx2);
. . .
int k2 = e2->bootstrap_method_index();
. . .
if (argc == e2->argument_count()) {
. . .
k2 = e2->argument_index(j);
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/25298#discussion_r2155183220
More information about the hotspot-dev
mailing list