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