RFR: 8221361: Eliminate two-phase initialization for PtrQueueSet classes
thomas.schatzl at oracle.com
Mon Sep 9 10:28:58 UTC 2019
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