RFR: 8259776: Remove ParallelGC non-CAS oldgen allocation

Kim Barrett kbarrett at openjdk.java.net
Fri Jan 15 14:22:09 UTC 2021


Please review this change to ParallelGC oldgen allocation.  There were two
variants, one using CAS on the _top member of the mutable space, the other
requiring locking or other forms of mutual exclusion.

We don't need both variants.  The non-CAS variant is only used in a few
places, where the cost of an extra CAS doesn't matter.  What does matter is
that having two variants, which must not be used concurrently, makes the
code larger, more complex, and harder to verify.  (This change came out of
analyzing JDK-8259271.  No problems were found (or expected), so this change
is not expected to impact that bug.  But because of the two variants, the
possibility of unexpected interact needed to be examined.)

The non-CAS allocation support has been removed, with PSOldGen::allocate now
implemented using the CAS-based allocation.  The cas_ prefix naming
convention is retained for the internals for clarity.

While looking at this, noticed and removed a couple of lingering references
to the class AdjoiningGenerations, which no longer exists after JDK-8243146.

Testing:
mach5 tier1-5

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

Commit messages:
 - remove non-CAS allocate

Changes: https://git.openjdk.java.net/jdk/pull/2101/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2101&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8259776
  Stats: 133 lines in 9 files changed: 1 ins; 119 del; 13 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2101.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2101/head:pull/2101

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



More information about the hotspot-gc-dev mailing list