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

Zhengyu Gu zgu at redhat.com
Tue Apr 14 20:15:00 UTC 2020


Updated based on offline discussion:

http://cr.openjdk.java.net/~zgu/JDK-8242643/webrev.02/

-Zhengyu

On 4/14/20 3:41 PM, Zhengyu Gu wrote:
> 
> 
> 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 shenandoah-dev mailing list