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

Roman Kennke rkennke at redhat.com
Sat Jun 15 20:08:42 UTC 2019


Looks ok to me.

Thanks,

Roman


> Breaking out Suspendible workers changes to JDK-8225813 [1]
> 
> Updated webrev: http://cr.openjdk.java.net/~zgu/JDK-8225582/webrev.01/
> 
> Reran hotspot_gc_shenandoah tests (fastdebug and release)
> 
> Thanks,
> 
> -Zhengyu
> 
> 
> [1] https://bugs.openjdk.java.net/browse/JDK-8225813
> 
> 
> 
> On 6/14/19 3:00 PM, Roman Kennke wrote:
>> Maybe makes sense to also break out the suspendible workers part?
>>
>> Roman
>>
>>
>> Am 14. Juni 2019 20:22:52 MESZ schrieb Zhengyu Gu <zgu at redhat.com>:
>>
>>     So, is this a review?
>>
>>     Thanks,
>>
>>     -Zhengyu
>>
>>     On 6/14/19 10:25 AM, Roman Kennke wrote:
>>
>>         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.
>>
>>
>> -- 
>> Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20190615/43f87235/signature.asc>


More information about the hotspot-gc-dev mailing list