RFR: 8370041: GenShen: Filter young pointers from thread local SATB buffers when only marking old [v3]
William Kemper
wkemper at openjdk.org
Thu Nov 6 17:53:12 UTC 2025
On Thu, 6 Nov 2025 01:04:04 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:
>> William Kemper has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 21 commits:
>>
>> - Merge remote-tracking branch 'jdk/master' into piggyback-satb-flush-on-update-roots
>> - Merge remote-tracking branch 'jdk/master' into piggyback-satb-flush-on-update-roots
>> - Flush SATB buffers upon entering degenerated cycle when old marking is in progress
>>
>> This has to happen at least once during the degenerated cycle. Doing it at the start, rather than the end, simplifies the verifier.
>> - Fix typo in comment
>> - Remove duplicate satb flush closure
>> - Only flush satb once during degenerated cycle
>> - Cleanup and comments
>> - Merge remote-tracking branch 'jdk/master' into piggyback-satb-flush-on-update-roots
>> - Fix assertion
>> - Oops, move inline definition out of ifdef ASSERT
>> - ... and 11 more: https://git.openjdk.org/jdk/compare/1922c4fd...4bd602de
>
> src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp line 1143:
>
>> 1141: // be in the collection set. If this happens, the pointer will be preserved, essentially
>> 1142: // becoming part of the old snapshot.
>> 1143: // 2. The region is allocated during evacuation of old. This is also not a concern because
>
> One related question. In both these cases, I assume the reference will look "marked" because it's above TAMS for the purposes of the old marking?
In the first case (in-place promotion) the pointer wouldn't necessarily be above TAMS. In this case, we would leave the object in the 'complete' buffer and it would become marked by the old marking threads (it becomes part of the old snapshot).
The second case is not an issue because none of the cset regions will become trash until _after_ `final-update-refs` (so no regions could become old until after we filter the SATB buffers). For regions that are already old, then the TAMS and mark bit map work as usual.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27983#discussion_r2500141016
More information about the hotspot-gc-dev
mailing list