RFR: 8306541: Refactor collection set candidate handling to prepare for JDK-8140326 [v3]

Thomas Schatzl tschatzl at openjdk.org
Tue May 2 13:41:28 UTC 2023


> Hi all,
> 
>   please review this refactoring of collection set candidate set handling.
> 
> The idea is to improve the interface to collection set candidates and prepare for having collection set candidates available at any time to evacuate them at any young collection.
> 
> These preparations to allow for multiple sources for these candidates (from the marking, as now, and from retained regions, i.e. evacuation failed regions as per [JDK-8140326](https://bugs.openjdk.org/browse/JDK-8140326)).
> 
> This patch only uses candidates from marking at this time.
>  
> Also moves gc efficiency out of HeapRegion and associate it to the list element as it's not used otherwise.
>     
> In detail:
>     * the collection set candidates set is not temporarily allocated any more, but the candidate collection set object is available all the time.
>     
>     * G1CollectionSetCandidates is the main class, representing the current candidates. Contains the "from marking" candidate list only (at this point).
>     
>     * there are several additional helper sets/lists
>       * G1CollectionSetRegionList: list of HeapRegion*, typically sorted by efficiency (but not necessarily). Also does not contain gc efficiences.
>       * G1CollectionCandidateList: list of candidates, i.e. HeapRegion* with their gc efficiency. Building block for the actual collection set candidates list.
>     
> All these sets implement C++ iterators for simpler use in various places.
>     
> Testing:
>  - this patch only: tier1-3, gha
>  - with JDK-8140326 tier1-7 (or 8?)
> 
> Thanks,
>   Thomas

Thomas Schatzl has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains eight commits:

 - Merge branch 'master' into 8306541-refactor-cset-candidates
 - ayang review - remove unused methods
 - Whitespace fixes
 - typo
 - More cleanup
 - Cleanup
 - Cleanup
 - Refactor collection set candidates
   
   Improve the interface to collection set candidates and prepare for having collection set
   candidates at any time. Preparations to allow for multiple sources for these candidates
   (from the marking, as now, and from retained, i.e. evacuation failed regions). This patch
   only uses candidates from marking at this time.
   
   Also moves gc efficiency out of HeapRegion and associate it to the list element as it's
   not used otherwise.
   
   * the collection set candidates set is not temporarily allocated any more, but the candidate
   set object must be available all the time.
   
   * G1CollectionSetCandidates is the main class, representing the current candidates. Contains
     the "from marking" candidate list only (at this point).
   
   * there are several additional helper sets/lists
     * G1CollectionSetRegionList: list of HeapRegion*, typically sorted by efficiency (but not
       necessarily). Also does not contain gc efficiences.
     * G1CollectionCandidateList: list of candidates, i.e. HeapRegion* with their gc efficiency.
       Building block for the actual collection set candidates list.
   
   All these sets implement C++ iterators for simpler use in various places.
   
   Everything else are changes to use these helper sets/lists throughout.
   
   Some additional FIXME for log messages to remove are in there. Please ignore.

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

Changes: https://git.openjdk.org/jdk/pull/13666/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13666&range=02
  Stats: 1085 lines in 26 files changed: 622 ins; 217 del; 246 mod
  Patch: https://git.openjdk.org/jdk/pull/13666.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13666/head:pull/13666

PR: https://git.openjdk.org/jdk/pull/13666


More information about the hotspot-dev mailing list