[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