RFR: Mixed evacuation [v5]

Kelvin Nilsen kdnilsen at openjdk.java.net
Mon Apr 19 21:38:39 UTC 2021


On Mon, 12 Apr 2021 19:55:48 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

>> Kelvin Nilsen has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Refactor ShenandoahOldHeuristics
>>   
>>   Code reviewers of the draft mixed-evacuation pull request raised a concern
>>   about entanglement between young-gen and old-gen heuristics.  In response to
>>   suggestions by reviewers, this patch refactors the old-gen heuristics
>>   implementation as follows:
>>   
>>   1. Add old_heuristics argument and pass it so we no longer depend on
>>      _old_heuristics field.
>>   
>>      Done, tested with run-milestone8-github, "make test TEST=tier1" and
>>      "make test TEST=hotspot_gc_shenandoah"
>>   
>>   2. Hoist test for should_defer_gc() into
>>      ShenandoahRegulatorThread::start_old_cycle().  Remove all other
>>      invocations of should_defer_gc().
>>   
>>      Done, tested with run-milestone8-github, "make test TEST=tier1" and
>>      "make test TEST=hotspot_gc_shenandoah"
>>   
>>   3. Remove _old_heuristics field and constructor and initializer
>>      argument from ShenandoahPassiveHeuristics,
>>      ShenandoahStaticHeuristics, ShenandoahAdaptiveHeuristics,
>>      ShenandoahAggresiveHeuristics,
>>      ShenandoahMode::initialize_heuristics(),
>>      ShenandoahPassiveMode:::initialize_heuristics(),
>>      ShenandoahGeneration::initialize_heuristics().
>>   
>>      Done, tested with run-milestone8-github, "make test TEST=tier1" and
>>      "make test TEST=hotspot_gc_shenandoah".  Note that GC behavior
>>      changed a little in run-milestone8-github.  Without confirmed
>>      review of output files, my impression is that full GC triggered
>>      earlier, at GC(101), and piggyback collections each processed fewer
>>      old-gen candidates (18 rather than 30).
>>   
>>   4. Introduce a new ShenandoahOldHeuristics subclass of
>>      ShenandoahHeuristics.  Move certain old-gen specific methods there,
>>      including: prime_collection_set() (renamed from
>>      prime_collection_set_with_old_candidates()),
>>      prepare_for_old_collection(), start_old_evacuations(),
>>      unprocessed_old_collection_candidates(),
>>      next_old_collection_candidates(),
>>      consume_old_collection_candidates(),
>>      old_coalesce_and_fill_candidates(),
>>      get_coalesce_and_fill_candidates(), should_defer_gc().
>>      Remove the _old_heuristics argument from prime_collection_set() and
>>      prepare_for_old_collection(); adjust the invocations.
>>   
>>   5. Make the following subclasses of ShenandoahOldHeuristics.  In the
>>      initial implementation, these subclasses have the same behavior
>>      as the young-gen heuristics from which they were copied.  Future
>>      refinement may result in tailored behavior of the old-gen
>>      versions of each heuristic: ShenandoahAdaptiveOldHeuristics,
>>      ShenandoahAggresiveOldHeuristics, ShenandoahCompactHeuristics,
>>      ShenandoahPassiveOldHeuristics, ShenandoahStaticOldHeuristics.
>
> src/hotspot/share/gc/shenandoah/shenandoahGeneration.cpp line 129:
> 
>> 127: void ShenandoahGeneration::prepare_gc() {
>> 128:   reset_mark_bitmap();
>> 129: 
> 
> Lone whitespace change here.

Added this blank line back in.

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

PR: https://git.openjdk.java.net/shenandoah/pull/29


More information about the shenandoah-dev mailing list