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

Kim Barrett kbarrett at openjdk.org
Fri Dec 13 01:29:13 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 five additional commits since the last revision:

 - Merge branch 'master' into pa-splitter
 - parallel uses PartialArraySplitter
 - g1 uses PartialArraySplitter
 - add PartialArraySplitter
 - add PartialArrayTaskStats

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/22622/files
  - new: https://git.openjdk.org/jdk/pull/22622/files/7da8b4b0..b0ea3f51

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

  Stats: 15644 lines in 2681 files changed: 8811 ins; 1996 del; 4837 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