RFR: Improve humongous remset scan [v2]

Kelvin Nilsen kdnilsen at openjdk.java.net
Thu Jun 16 04:01:53 UTC 2022


On Tue, 14 Jun 2022 22:35:31 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> Kelvin Nilsen has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Improvements requested by reviewer
>
> src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp line 585:
> 
>> 583: // DO NOT CANCEL.  If this worker thread has accepted responsibility for scanning a particular range of addresses, it
>> 584: // must finish the work before it can be cancelled.
>> 585: void ShenandoahHeapRegion::oop_iterate_humongous_slice(OopIterateClosure* blk, bool dirty_only,
> 
> Should this also be used during marking scan?

There is a similar solution that divides the humongous regions into slices smaller than the full region size, but this is planned for a future pull request.  It is less critical to divide into smaller slices during update refs because the "structure" of update references allows some worker threads to begin updating old-gen references even before all threads have finished updating references within young-gen.

> src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp line 621:
> 
>> 619:     // Scan all data, regardless of whether cards are dirty
>> 620:     while (num_cards-- > 0) {
>> 621:       obj->oop_iterate(blk, MemRegion(start, start + CardTable::card_size_in_words()));
> 
> Could this just be `obj->oop_iterate(blk, MemRegion(start, start + CardTable::card_size_in_words() * num_cards))`?

Yes.  Thanks.

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

PR: https://git.openjdk.org/shenandoah/pull/144


More information about the shenandoah-dev mailing list