RFR: Mixed evacuation [v4]

Roman Kennke rkennke at openjdk.java.net
Fri Apr 16 16:37:59 UTC 2021


On Fri, 16 Apr 2021 14:38:10 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:

> Was actually in the middle of doing something similar to this. I can redirect towards your solution or continue with the one I am working on. Here's how mine differs from yours:
> 
>     1. I would introduce a subclass of ShenandoahHeuristics to be called ShenandoahOldHeuristics.  This would hold all the new methods that are specific to old-generation heuristics, currently added to ShenandoahHeuristics: prime_collection_set()  (renamed from prime_collection_set_with_old_candidates), prepare_for_old_collection(), start_old_evacuations(), unprocessed_old_collection_candidates(), next_old_collection_candidates(), consume_old_collection_candidate(), old_coalesce_and_fill_candidates(), get_coalesce_and_fill_candidates(), should_defer_gc()
> 
>     2. I would pass a new ShenandoahOldHeuristics* old_heuristics argument to choose_collection_set() (possibly null in the case that we are doing GLOBAL - non-generation GC) and this argument would be passed down into prepare_for_other_collection().
> 
>     3. I would hoist the check for should_defer_gc() into ShenandoahRegulatorThread::start_old_cycle() so that we don't have to "pollute" all the existing heuristics with this test.
> 
> 
> As with your proposal, there would no longer be a _old_heuristics field within ShenandoahHeuristics. This is why I have to pass in the new old_heuristics argument to the invocation of choose_collection_set().
> 
> Are you ok with this approach?

That sounds reasonable. Go for it.

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

PR: https://git.openjdk.java.net/shenandoah/pull/29


More information about the shenandoah-dev mailing list