<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>