RFR: 8301995: Move invokedynamic resolution information out of ConstantPoolCacheEntry [v16]

Matias Saavedra Silva matsaave at openjdk.org
Fri Mar 31 15:36:59 UTC 2023


On Tue, 28 Mar 2023 19:50:36 GMT, Matias Saavedra Silva <matsaave at 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:
> 
>   s390x NULL to nullptr

> This obviously breaks arm, since its implementation is missing. I opened https://bugs.openjdk.org/browse/JDK-8305387 to track this. This is unfortunate since it holds work on arm in other areas, in my case for #10907.
> 
> > This change supports the following platforms: x86, aarch64, PPC, RISCV, and S390x
> 
> I wonder about the explicit exclusion of arm. Every other CPU seems to be taken care of, even those Oracle does not maintain. Just curious, was there a special reason for excluding arm?

There is no special reason ARM32 was excluded other than the fact no porter has picked it up yet. Fortunately I was able to get in contact with porters for the other platforms, but nobody took on the ARM port until now. Thank you for opening the issue!

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

PR Comment: https://git.openjdk.org/jdk/pull/12778#issuecomment-1492144686


More information about the serviceability-dev mailing list