RFR: 8330388: Remove invokedynamic cache index encoding

Gilles Duboscq gdub at openjdk.org
Thu Apr 18 07:53:58 UTC 2024


On Wed, 17 Apr 2024 15:26:52 GMT, Matias Saavedra Silva <matsaave at openjdk.org> wrote:

> Before [JDK-8307190](https://bugs.openjdk.org/browse/JDK-8307190), [JDK-8309673](https://bugs.openjdk.org/browse/JDK-8309673), and [JDK-8301995](https://bugs.openjdk.org/browse/JDK-8301995), invokedynamic operands needed to be rewritten to encoded values to better distinguish indy entries from other cp cache entries. The above changes now distinguish between entries with `to_cp_index()` using the bytecode, which is now propagated by the callers.
> 
> The encoding flips the bits of the index so the encoded index is always negative, leading to access errors if there is no matching decode call. These calls are removed with some methods adjusted to distinguish between indices with the bytecode. Verified with tier 1-5 tests.

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotConstantPool.java line 720:

> 718:     @Override
> 719:     public JavaMethod lookupMethod(int rawIndex, int opcode, ResolvedJavaMethod caller) {
> 720:         int which = rawIndex;

We could get rid of that intermediate variable now and just use `rawIndex` below.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18819#discussion_r1570192972


More information about the hotspot-dev mailing list