RFR: Add generations to freeset [v8]
William Kemper
wkemper at openjdk.org
Thu Apr 20 18:13:22 UTC 2023
On Wed, 19 Apr 2023 15:27:57 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:
>> ShenandoahFreeSet has not yet been modified to deal efficiently with the combination of old-gen and young-gen collection set reserves. This PR makes changes so that we can distinguish between collector_is_free, old_collector_is_free, and mutator_is_free. Further, it endeavors to keep each set of free regions tightly packed, so the range of regions representing each set is small.
>>
>> In its current form, this no longer fails existing regression tests (except for known problems that are being addressed independently)
>
> Kelvin Nilsen has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 207 commits:
>
> - Merge remote-tracking branch 'origin' into add-generations-to-freeset
> - Respond to reviewer feedback
>
> Various improvements suggested by reviewers. Mostly improved comments
> and some minor refactoring.
> - Add TODO comment for exapnsion of old-gen
> - Remove debug instrumentation
> - Merge master
> - Fix calculation of minimum fill size
>
> We were incorrectly using byte size rather than word size.
> - Fix error in ShenandoahFreeSet usage accounting
>
> We were incorrectly increasing used for plab padding. That is
> old_collector memory and should not affect mutator usage. This commit
> also includes some refactoring, additional assertions, and additional
> verification of consistent free-space accounting.
> - Fix typo in a comment
> - Fix white space
> - Merge remote-tracking branch 'GitFarmBranch/add-generations-to-freeset' into add-generations-to-freeset
> - ... and 197 more: https://git.openjdk.org/shenandoah/compare/016bf071...7319eeeb
src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp line 610:
> 608:
> 609: // If idx represents a collector bound, recompute the collector bounds, returning true iff bounds were adjusted.
> 610: bool ShenandoahFreeSet::adjust_collector_bounds_if_touched(size_t idx) {
This really feels like there should be a `RegionFreeSet` class with instances for `mutator`, `collector`, and `old_collector`. There's a lot of code duplication here. A refactoring for another PR.
-------------
PR Review Comment: https://git.openjdk.org/shenandoah/pull/250#discussion_r1172935802
More information about the shenandoah-dev
mailing list