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.

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

Commit messages:
 - Bug
 - Missing inline
 - oops again
 - Oops
 - Docs
 - Another one
 - Simplify further
 - Rename and simplify
 - This is wron
 - Deleting operands

Changes: https://git.openjdk.org/jdk/pull/27198/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27198&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8367656
  Stats: 728 lines in 11 files changed: 321 ins; 247 del; 160 mod
  Patch: https://git.openjdk.org/jdk/pull/27198.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27198/head:pull/27198

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

Reply via email to