On Tue, 28 Mar 2023 15:00:14 GMT, Matias Saavedra Silva <matsa...@openjdk.org> 
wrote:

>> The current structure used to store the resolution information for 
>> invokedynamic, ConstantPoolCacheEntry, is difficult to interpret due to its 
>> ambigious fields f1 and f2. This structure can hold information for fields, 
>> methods, and invokedynamics and each of its fields can hold different types 
>> of values depending on the entry. 
>> 
>> This enhancement proposes a new structure to exclusively contain 
>> invokedynamic information in a manner that is easy to interpret and easy to 
>> extend.  Resolved invokedynamic entries will be stored in an array in the 
>> constant pool cache and the operand of the invokedynamic bytecode will be 
>> rewritten to be the index into this array.
>> 
>> Any areas that previously accessed invokedynamic data from 
>> ConstantPoolCacheEntry will be replaced with accesses to this new array and 
>> structure. Verified with tier1-9 tests.
>> 
>> The PPC port was provided by @reinrich, RISCV was provided by @DingliZhang 
>> and @zifeihan, and S390x by @offamitkumar.
>> 
>> This change supports the following platforms: x86, aarch64, PPC, RISCV, and 
>> S390x
>
> Matias Saavedra Silva has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   s390 update

s390 changes look good. 
Thank you, Amit, for working hard to get this done.

src/hotspot/cpu/s390/templateTable_s390.cpp line 2432:

> 2430: 
> 2431:   // The invokedynamic is unresolved iff method is NULL
> 2432:   __ z_clgij(method, 0, Assembler::bcondNotEqual, resolved); // method 
> != 0, jump to resolved

In the light of the ongoing effort to substitute all occurrences of NULL (and 
(void*)0) with nullptr, you may want to substitute 0 with (unsigned 
long)nullptr here.

src/hotspot/cpu/s390/templateTable_s390.cpp line 2442:

> 2440:   __ z_lg(method, Address(cache, 
> in_bytes(ResolvedIndyEntry::method_offset())));
> 2441: #ifdef ASSERT
> 2442:   __ z_clgij(method, 0, Assembler::bcondNotEqual, resolved); // method 
> != 0, jump to resolved

Same as above.

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

Marked as reviewed by lucy (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/12778#pullrequestreview-1361535849
PR Review Comment: https://git.openjdk.org/jdk/pull/12778#discussion_r1150904328
PR Review Comment: https://git.openjdk.org/jdk/pull/12778#discussion_r1150904861

Reply via email to