RFR: 8368006: Parallel: Skip full regions in dense prefix during Full GC [v2]

Francesco Andreuzzi fandreuzzi at openjdk.org
Wed Sep 24 21:00:29 UTC 2025


On Wed, 24 Sep 2025 15:00:17 GMT, Albert Mingkun Yang <ayang at openjdk.org> wrote:

>> src/hotspot/share/gc/parallel/psParallelCompact.cpp line 1721:
>> 
>>> 1719:   for (HeapWord* cur_addr = start_addr; cur_addr < end_addr; /* empty */) {
>>> 1720:     RegionData* cur_region_ptr = _summary_data.addr_to_region_ptr(cur_addr);
>>> 1721:     if (cur_region_ptr->data_size() == region_size) {
>> 
>> The next lines up to `cur_addr += cur_region_ptr->partial_obj_size()` could possibly be extracted to a common function? Then you could check again if `cur_region_ptr->data_size() == region_size` to decide if you should `continue`.
>
> Can you provide a snippet? I don't get what you are suggesting. Just fyi, `cur_addr += cur_region_ptr->partial_obj_size()` is needed to make sure `cur_addr` is live-obj-end.

This snippet:
https://github.com/openjdk/jdk/blob/20937445c8a56f905df542ebe159d53494b66670/src/hotspot/share/gc/parallel/psParallelCompact.cpp#L1720-L1737

and this:
https://github.com/openjdk/jdk/blob/20937445c8a56f905df542ebe159d53494b66670/src/hotspot/share/gc/parallel/psParallelCompact.cpp#L1788-L1805

are almost identical, am I missing something?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27369#discussion_r2377064052


More information about the hotspot-gc-dev mailing list