RFR (M) JDK-8151178: Move the collection set out of the G1 collector policy

Tom Benson tom.benson at oracle.com
Fri Mar 4 16:58:00 UTC 2016

Hi Mikael,
In g1CollectionSet.cpp, there are still some references to old names in 
    122   // The two "main" fields, _inc_cset_recorded_rs_lengths and
    123   // _inc_cset_predicted_elapsed_time_ms, are updated by the thread

    158   // We could have updated _inc_cset_recorded_rs_lengths and
    159   // _inc_cset_predicted_elapsed_time_ms directly but we'd need 
to do

Also extra blank lines at 335 and 353.

Also one ref to an old name in g1CollectionSet.hpp:
     55 // pause, and incremented in finalize_old_cset_part() when 
adding old regions

Did you mean to leave this in?
     174 // XXX MGFIXME detgc!

The initialization of the links between Policy and CollectionSet seems a 
little odd to me.  In the G1CollectedHeap constructor, the 
G1CollectedSet is created and given the policy ref, which it saves in 
its G1CollectorPolicy* _g1p :

    1742 G1CollectedHeap::G1CollectedHeap(G1CollectorPolicy* policy_) :
    1743 CollectedHeap(),
    1744 _g1_policy(policy_),
    1745 _collection_set(new G1CollectionSet(this, policy_)),

But it isn't until G1CollectedHeap::initialize() calls 
g1_policy()->init() that the ref to the G1CollectedSet will be stored in 
the G1CollectorPolicy:

    473 _g1 = G1CollectedHeap::heap();
    474 _collection_set = _g1->collection_set();

At a minimum, if feels like there should be an assertion here that 
_collection_set's "G1CollectorPolicy* _g1p" already points to This.   
But it might make more sense to have a way to init the CollectionSet's 
policy ptr at this point, rather than in its constructor.


On 3/4/2016 11:06 AM, Mikael Gerdin wrote:
> Hi Jesper,
> On 2016-03-04 15:57, Jesper Wilhelmsson wrote:
>> Hi Mikael,
>> Looks OK.
>>  From a purely aesthetic point of view I would appreciate if you cleaned
>> up lines 78, 145, 156 in g1CollectionSet.cpp
> Will do.
>> Also, most files could use a new copyright date if you care about that
>> sort of thing :)
> I'll run the magic script :)
> Thanks for the review.
> /Mikael
>> Thanks,
>> /Jesper
>> Den 4/3/16 kl. 09:35, skrev Mikael Gerdin:
>>> Hi all,
>>> As part of an attempt to make it easier for G1 to contain multiple
>>> collector
>>> policies I suggest that the collection set code should be moved out of
>>> the
>>> current G1 collector policy class into a class of its own.
>>> I've tried to hold back on doing further cleanups in this patch in
>>> order to make
>>> it easier to review the changes.
>>> I do have some ideas on how the collection set code could be further
>>> cleaned up
>>> but I'm not sure if I will have time to test them properly before FC.
>>> Webrev:
>>> http://cr.openjdk.java.net/~mgerdin/8151178/version1/webrev_full
>>> I've also split the change into three webrevs in the version1 
>>> directory:
>>> webrev_1 consists of moving the code and changing code accessing
>>> collection set
>>> related methods
>>> webrev_2 consists of renaming almost all methods in the new class to
>>> not contain
>>> redundant collection set naming
>>> webrev_3 restores the functionality for collector policy extensions to
>>> hook into
>>> collection set selection.
>>> Bug:
>>> https://bugs.openjdk.java.net/browse/JDK-8151178
>>> Testing: JPRT, RBT GC testing.
>>> Thanks6
>>> /Mikael

More information about the hotspot-gc-dev mailing list