On Wed, 17 Apr 2024 15:26:52 GMT, Matias Saavedra Silva <matsa...@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