> This PR split out large array/set construction into separate factory methods 
> to avoid oversized method trying to construct several of those.
> 
> In order to do that, we will need to generate those help methods on demand in 
> the class builder. Here we have two approach, one is for dedup set, which is 
> processed in advance so we can know what methods should be created.
> 
> Another is for random set, such as packages, thus we put those request into a 
> queue to amend the class later.
> 
> To keep the optimization of caching built value that are references more than 
> once, it was implemented using local vars, which doesn't work well for helper 
> methods. The existing approach to populate local vars doesn't work well with 
> larger scope of split operation, as the slot was allocated on lazily built, 
> but the transfer is captured in advance, this count could mismatch as built 
> time and run time.
> 
> So we make this build in advance, and use a static array for values referred 
> more than once.
> 
> All the codegen instead of giving index to be loaded, the builder snippet now 
> load the wanted set/array to the operand stack to be consistent.

Henry Jen 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 seven additional commits since the 
last revision:

 - Merge remote-tracking branch 'openjdk/master' into JDK-8321413
 - Loadable support with paging support. The limiting factor is now constant 
pool size
 - Add more comments, move snippet generation code into standalone class
 - Fix typo and add comments based on review feedback
 - Missing from last commit
 - Address review comments
 - 8321413: IllegalArgumentException: Code length outside the allowed range 
while creating a jlink image

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/21022/files
  - new: https://git.openjdk.org/jdk/pull/21022/files/ab6459d3..2d40e05e

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=21022&range=05
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=21022&range=04-05

  Stats: 266742 lines in 2395 files changed: 225243 ins; 30051 del; 11448 mod
  Patch: https://git.openjdk.org/jdk/pull/21022.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21022/head:pull/21022

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

Reply via email to