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