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

Zhengyu Gu zgu at redhat.com
Fri Jun 14 18:22:52 UTC 2019


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.



More information about the hotspot-gc-dev mailing list