RFR: 8357220: Introduce a BSMAttributeEntry struct

Chris Plummer cjplummer at openjdk.org
Mon May 19 17:52:53 UTC 2025


On Mon, 19 May 2025 07:35:16 GMT, Johan Sjölen <jsjolen at openjdk.org> wrote:

> Hi,
> 
>  The constant pool currently has a lot of methods specific to extracting parts of the operands array. What this array actually is, is a sequence of bootstrap method attribute entries, where each entry has the following components:
> 
> ```c++
> struct BSMAE {
>   u2 bootstrap_method_index;
>   u2 argument_count;
>   u2 arguments[argument_count];
> }
> 
> 
> We can removes some of these operands array specific methods, and instead allows you to extract BSMAttributeEntrys which you can then use to extract its piece wise components. This makes for a nicer interface, and a bit easier to come into as a reader of the code, as it more closely mirrors the JVMS. 
> 
> Please consider!
> 
> Testing: Currently GHA, running tier1-tier3

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ConstantPool.java line 126:

> 124:   private static int INDY_BSM_OFFSET = 0;
> 125:   private static int INDY_ARGC_OFFSET = 1;
> 126:   private static int INDY_ARGV_OFFSET = 2;

Is the SA code that references these fields still correct? It seems the references are from the ClassWriter, which we don't have very good test coverage for. Probably this is a bug that is not being detected.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25298#discussion_r2096231130


More information about the hotspot-dev mailing list