RFR: 8345732: Provide helpers for using PartialArrayState [v4]

Kim Barrett kbarrett at openjdk.org
Tue Dec 17 18:08:23 UTC 2024


> Please review this change that introduces two new helper classes to simplify
> the usage of PartialArrayStates to manage splitting the processing of large
> object arrays into parallelizable chunks.  G1 and Parallel young GCs are
> changed to use this new mechanism.
> 
> PartialArrayTaskStats is used to collect and report statistics related to
> array splitting.  It replaces the direct implementation in PSPromotionManager,
> and is now also used by G1 young GCs.
> 
> PartialArraySplitter packages up most of the work involved in splitting and
> processing tasks. It provides task allocation and release, enqueuing, chunk
> claiming, and statistics tracking. It does this by encapsulating existing
> objects and functionality. Using array splitting is mostly reduced to calling
> the splitter's start function and then calling it's step function to process
> partial states. This substantially reduces the amount of code for each client
> to perform this work.
> 
> Testing: mach5 tier1-5
> 
> Manually ran some test programs with each of G1 and Parallel, with taskqueue
> stats logging enabled, and checked that the logged statistics looked okay.

Kim Barrett 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 14 additional commits since the last revision:

 - Merge branch 'master' into pa-splitter
 - merge log_set decl/defn
 - remove default counts for stats incrementers
 - remove uneeded 'explicit'
 - cleanup unneeded includes
 - remove moved-from macro defines
 - Merge branch 'master' into pa-splitter
 - rename splitter.step() => claim()
 - simplify comments
 - Merge branch 'master' into pa-splitter
 - ... and 4 more: https://git.openjdk.org/jdk/compare/b7c9006e...54c37988

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/22622/files
  - new: https://git.openjdk.org/jdk/pull/22622/files/cb70d7b3..54c37988

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=22622&range=03
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=22622&range=02-03

  Stats: 7934 lines in 322 files changed: 5981 ins; 859 del; 1094 mod
  Patch: https://git.openjdk.org/jdk/pull/22622.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22622/head:pull/22622

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


More information about the hotspot-gc-dev mailing list