[15] RFR 8242643: Shenandoah: split concurrent weak and strong root processing

Zhengyu Gu zgu at redhat.com
Tue Apr 14 19:41:27 UTC 2020



On 4/14/20 2:10 PM, Aleksey Shipilev wrote:
> On 4/14/20 8:00 PM, Zhengyu Gu wrote:
>> Let's split concurrent root phase into concurrent weak root and
>> concurrent strong root phases.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8242643
>> Webrev: http://cr.openjdk.java.net/~zgu/JDK-8242643/webrev.00/index.html
> 
> *) shenandoahHeap.cpp: can we label them "Concurrent weak roots" and "Concurrent strong roots"? At
> very least drop the underscore. "processing" feels redundant.
> 
> 2810   static const char* msg = "Concurrent weak_roots processing";
> ...
> 2825   static const char* msg = "Concurrent strong roots processing";
> 
> *) shenandoahHeap.cpp, excess newline:
> 
> 2838
> 2839
> 
Fixed

> *) shenandoahHeap.cpp: I suggest we rename the flags to is_strong_roots_in_progress and
> is_weak_roots_in_progress. It would underline they are siblings, not parent-child.
Right.

> 
> *) shenandoahControlThread.cpp: I thought one of the points was to allow concurrent cleanup to run
> right after weak roots? Since strong roots are only updated-evac'ed, they are not need with shortcut
> cycles, so we can move them below under heap->is_evacuation_in_progress block?

Let's set concurrent_strong_in_progress conditionally, so it does not 
leak in case of !is_evacuation_in_progress.


Update: http://cr.openjdk.java.net/~zgu/JDK-8242643/webrev.01/index.html

Test in progress.

Thanks,

-Zhengyu

> 
>   345   // Processing weak roots
>   346   heap->entry_weak_roots();
>   347
>   348   // Processing strong
>   349   heap->entry_strong_roots();
>   350
> 
> 




More information about the hotspot-gc-dev mailing list