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 was provided by @reinrich and the RISCV port was provided by 
@DingliZhang and @zifeihan.

This change supports the following platforms: x86, aarch64, PPC, and RISCV

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

Commit messages:
 - PPC and RISCV port
 - 8301995: Move invokedynamic resolution information out of the cpCache

Changes: https://git.openjdk.org/jdk/pull/12778/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12778&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8301995
  Stats: 1418 lines in 54 files changed: 1036 ins; 168 del; 214 mod
  Patch: https://git.openjdk.org/jdk/pull/12778.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12778/head:pull/12778

PR: https://git.openjdk.org/jdk/pull/12778

Reply via email to