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.

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
>On 6/12/19 3:11 PM, Roman Kennke wrote:
>> IIRC (!) the IN_NATIVE barriers in C1 and C2 are applied to
>> intrinsic, which loads and unwraps the Class object from an obj via
>> Klass*. If the Klass* -> mirror reference is part of the CLDG roots
>> 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()
>> Roman
>>> Hi Roman,
>>> This patch does not deal with class unloading, it is still done at
>>> mark pause. What it does, is to move evacuate/update refs in CLDs
>>> SH::evacuate_and_update_roots() to concurrent phase, and at this
>>> 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.
>>>> the CLDG roots. Should be relatively easy to wire up the LRB
>>>> there (probably ask shade or roland). It will be more complex to do
>>>> 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
>>>>> first step that moves some root processing into concurrent phase,
>>>>> this step can be backported to the releases that don't support
>>>>> barrier.
>>>>> 1. Concurrent CLDG root evacuation can not run through safepoints,
>>>>> there may also perform CLDG walk, e.g. heap iteration. So it
>>>>> suspendible workers always on, therefore,
>>>>> flag is removed, along with related test cases. There are many
>>>>> 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
>>>>> 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