> 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.
Johan Sjölen has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 31 additional commits since the last revision: - Merge remote-tracking branch 'openjdk/master' into operands-again - It's fine to initialize the iterator with null, it's not fine to reserve an entry if it's null - Fix naming - Serguei comments - Revert change - Some nits - Fix copyright - Move BSMAttribute BSMAttributeEntries to own header file - Merge remote-tracking branch 'origin/operands-again' into operands-again - Apply suggestions from code review Co-authored-by: David Holmes <[email protected]> - ... and 21 more: https://git.openjdk.org/jdk/compare/1e0cd337...57f0093e ------------- Changes: - all: https://git.openjdk.org/jdk/pull/27198/files - new: https://git.openjdk.org/jdk/pull/27198/files/219ef346..57f0093e Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=27198&range=15 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27198&range=14-15 Stats: 278590 lines in 3431 files changed: 200223 ins; 55822 del; 22545 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
