RFR: Improve humongous remset scan [v2]

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


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

>> src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp line 2464:
>> 
>>> 2462:               // old-gen heap regions.
>>> 2463:               if (r->is_humongous()) {
>>> 2464:                 // Need to examine both dirty and clean cards during mixed evac.
>> 
>> Sorry, I'm not seeing it. This code looks like it will compute the same `end_of_object` for every region in the humongous object (line 2468), but `start_of_scan` will be `r->bottom`. It seems like this code will have every thread that encounters a region in the humongous object scan the regions between `r` and `end_of_object`. The original method `oop_iterate_humongous` would scan only between `r->bottom` and `r->top`. Maybe we want `end_of_object` to be `r->top` and combine that with only scanning dirty cards?
>
> Or, in this case, since we don't care about cards being dirty and we will scan the whole region, could just use the original method?

Agree that it is easier to just call the original function here.  Thanks for your insight.

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

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


More information about the shenandoah-dev mailing list