RFR: 8259776: Remove ParallelGC non-CAS oldgen allocation [v3]

Stefan Johansson sjohanss at openjdk.java.net
Wed Jan 20 12:58:49 UTC 2021


On Mon, 18 Jan 2021 23:51:55 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

>> 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
>
> Kim Barrett has updated the pull request incrementally with one additional commit since the last revision:
> 
>   move oldgen alloc with size policy recording to heap object

Nice cleanup.

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

Marked as reviewed by sjohanss (Reviewer).

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



More information about the hotspot-gc-dev mailing list