On Wed, 10 Sep 2025 16:19:17 GMT, Johan Sjölen <[email protected]> wrote:

> Hi,
> 
> This is a refactoring of the way that we store the Bootstrap method attribute 
> in the ConstantPool class. We used to have a single `Array<u2>` which was 
> divided into a section of `u4` offsets and a section which was the actual 
> data. In this refactoring we make this split more clear, by actually 
> allocating an `Array<u4>` to store the offsets in and an `Array<u2>` to store 
> the data in. These arrays are then put into a `BSMAttributeEntries` class, 
> which allows us to separate out the API from that of the rest of the 
> `ConstantPool`.
> 
> We had multiple instances of the code knowing the layout of the operands 
> array and using this to do 'clever' ways of copying and inserting data into 
> it. See `ConstantPool::copy_operands` and `ConstantPool::resize_operands`. I 
> felt like we could do things in a simpler way, so I added the 
> `start_/end_extension` protocol and added the `InsertionIterator` for this. 
> See `ClassFileParser::parse_classfile_bootstrap_methods_attribute` for how 
> this works. I put several relevant definitions into the inline file in hopes 
> of encouraging the compiler to optimize these appropriately.
> 
> For the Java SA code, I had to add a `U4Array` class. I also had to fix the 
> vmstructs definitions, etc.
> 
> On the whole, while this code is a bit less terse, I think it's a good API 
> improvement and the underlying implementation of splitting up the operands 
> array is also an improvement.
> 
> Testing: Oracle Tier1-Tier5 has been run succesfully multiple times. Before 
> integration, I will merge with master and run these tiers again.

This pull request has now been integrated.

Changeset: d94c52cc
Author:    Johan Sjölen <[email protected]>
URL:       
https://git.openjdk.org/jdk/commit/d94c52ccf2fed3fc66d25a34254c9b581c175fa1
Stats:     895 lines in 12 files changed: 436 ins; 282 del; 177 mod

8367656: Refactor Constantpool's operand array into two

Reviewed-by: coleenp, sspitsyn, dholmes

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

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

Reply via email to