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