RFR 8225582: Shenandoah: Enable concurrent evacuation of JNIHandles and CLDG roots

Roman Kennke rkennke at redhat.com
Fri Jun 14 14:25:59 UTC 2019


In this case we're good.
Roman

Am 14. Juni 2019 15:27:37 MESZ schrieb Zhengyu Gu <zgu at redhat.com>:
>Hi Roman,
>
>Could you please take a look (Roland's comments) or if the CR is
>accurate?
>
>https://bugs.openjdk.java.net/browse/JDK-8225718
>
>Thanks,
>
>-Zhengyu
>
>On 6/12/19 3:11 PM, Roman Kennke wrote:
>> IIRC (!) the IN_NATIVE barriers in C1 and C2 are applied to
>getClass()
>> intrinsic, which loads and unwraps the Class object from an obj via
>the
>> Klass*. If the Klass* -> mirror reference is part of the CLDG roots
>(I
>> don't know if that is the case), then you're gonna need the C1 and C2
>> barriers for concurrent evacuation of CLDG roots, otherwise you might
>> leak from-space oops (the Class objects) in the getClass()
>intrinsics.
>> 
>> 
>> Roman
>> 
>>> Hi Roman,
>>>
>>> This patch does not deal with class unloading, it is still done at
>final
>>> mark pause. What it does, is to move evacuate/update refs in CLDs
>from
>>> SH::evacuate_and_update_roots() to concurrent phase, and at this
>point,
>>> they are strongly reachable.
>>>
>>> I will put this through more tests.
>>>
>>> Thanks,
>>>
>>> -Zhengyu
>>>
>>>
>>>
>>> On 6/12/19 1:44 PM, Roman Kennke wrote:
>>>> I suspect you're gonna need the C1 and C2 IN_NATIVE barriers, esp.
>for
>>>> the CLDG roots. Should be relatively easy to wire up the LRB
>barriers
>>>> there (probably ask shade or roland). It will be more complex to do
>the
>>>> other parts and return NULL on unreachable objects, but this is not
>>>> needed yet. When we do, we should probably just make it call out to
>>>> runtime.
>>>>
>>>> Roman
>>>>
>>>>> This is the last sub task of JDK-8225534 [1], that moves
>evacuation of
>>>>> JNIHandles and Class Loader Data into concurrent phase. This is
>the
>>>>> first step that moves some root processing into concurrent phase,
>and
>>>>> this step can be backported to the releases that don't support
>nmethod
>>>>> barrier.
>>>>>
>>>>> 1. Concurrent CLDG root evacuation can not run through safepoints,
>where
>>>>> there may also perform CLDG walk, e.g. heap iteration. So it
>requires
>>>>> suspendible workers always on, therefore,
>ShenandoahSuspendibleWorkers
>>>>> flag is removed, along with related test cases. There are many
>trivial
>>>>> changes just because of this flag.
>>>>>
>>>>> 2. A new concurrent phase "concurrent roots" is added to perform
>>>>> concurrent JNI and CLDG root evacuation. In Next step, it will
>also
>>>>> perform concurrent class unloading and nmethod cleanup.
>>>>>
>>>>> 3) This patch does not address Traversal GC.
>>>>>
>>>>>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8225582
>>>>> Webrev: http://cr.openjdk.java.net/~zgu/JDK-8225582/webrev.00/
>>>>>
>>>>> Test:
>>>>>     hotspot_gc_shenandoah (fastdebug and release)
>>>>>
>>>>>
>>>>> [1] https://bugs.openjdk.java.net/browse/JDK-8225582
>>>>>
>>>>> Thanks,
>>>>>
>>>>> -Zhengyu
>>>>
>> 

-- 
Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20190614/58aaeaa9/attachment.htm>


More information about the hotspot-gc-dev mailing list