RFR: 8280917: Simplify G1ConcurrentRefineThread activation

Kim Barrett kbarrett at openjdk.java.net
Mon Jan 31 00:14:25 UTC 2022


Please review this change to to G1ConcurrentRefineThreads to simplify the
activation mechanism.

We split the class into two subclasses, one for the "primary" refinement
thread and another class for the remaining refinement threads.

The secondary threads are changed to use Monitor-based waits and notifications
with a supporting request flag.

The primary thread uses an atomic activation threshold that also serves as "is
running" state.  This activation threshold is used by the write barrier
support to determine whether the thread's semaphore needs to be signaled.
That threshold is now in the primary refinement thread rather than in the
dirty card queue set to simplify threshold management and somewhat reduce
coupling.

Testing:
mach5 tier1-3

Manual tests with refinement thread logging enabled to verify expected
activations occur.

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

Commit messages:
 - refactor refinement threads

Changes: https://git.openjdk.java.net/jdk/pull/7282/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7282&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8280917
  Stats: 386 lines in 7 files changed: 237 ins; 96 del; 53 mod
  Patch: https://git.openjdk.java.net/jdk/pull/7282.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/7282/head:pull/7282

PR: https://git.openjdk.java.net/jdk/pull/7282



More information about the hotspot-gc-dev mailing list