RFR: 8221361: Eliminate two-phase initialization for PtrQueueSet classes
kim.barrett at oracle.com
Mon Sep 9 18:28:19 UTC 2019
> On Sep 9, 2019, at 6:28 AM, Thomas Schatzl <thomas.schatzl at oracle.com> wrote:
> On 9/6/19 11:25 PM, Kim Barrett wrote:
>> Please review this refactoring of PtrQueueSet to eliminate two-phase
>> construction. The objects are now fully constructed by the constructor and
>> there is no longer a need for an initialize() function.
>> In particular, the allocator is now a constructor argument. And in the case
>> of G1DirtyCardQueueSet, the CBL monitor is also a constructor argument.
>> This means that PtrQueueSet objects are always fully initialized. As a
>> consequence, we can eliminate the bootstrapping kludge in PtrQueue for
>> initializing the _capacity_in_bytes member.
>> This change required a little bit of refactoring for Shenandoah. The SATB
>> buffer allocator has been moved from the SATB pqset to the barrier set. When
>> constructing the barrier set, the allocator is constructed first and then
>> passed as an argument to the pqset constructor. This is all consistent with
>> G1's arrangement. Someone from the Shenandoah team should check this.
> This looks good. Great refactoring.
More information about the hotspot-gc-dev