<html><head></head><body>In this case we're good.<br>Roman<br><br><div class="gmail_quote">Am 14. Juni 2019 15:27:37 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">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><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">IIRC (!) the IN_NATIVE barriers in C1 and C2 are applied to getClass()<br>intrinsic, which loads and unwraps the Class object from an obj via the<br>Klass*. If the Klass* -> mirror reference is part of the CLDG roots (I<br>don't know if that is the case), then you're gonna need the C1 and C2<br>barriers for concurrent evacuation of CLDG roots, otherwise you might<br>leak from-space oops (the Class objects) in the getClass() intrinsics.<br><br><br>Roman<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"> Hi Roman,<br><br> This patch does not deal with class unloading, it is still done at final<br> mark pause. What it does, is to move evacuate/update refs in CLDs from<br> SH::evacuate_and_update_roots() to concurrent phase, and at 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><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;"> I suspect you're gonna need the C1 and C2 IN_NATIVE barriers, esp. for<br> the CLDG roots. Should be relatively easy to wire up the LRB barriers<br> there (probably ask shade or roland). It will be more complex to do the<br> other parts and return NULL on unreachable objects, but this is not<br> needed yet. When we do, we should probably just make it call out to<br> runtime.<br><br> Roman<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #fcaf3e; padding-left: 1ex;"> This is the last sub task of JDK-8225534 [1], that moves evacuation of<br> JNIHandles and Class Loader Data into concurrent phase. This is the<br> first step that moves some root processing into concurrent phase, and<br> this step can be backported to the releases that don't support nmethod<br> barrier.<br><br> 1. Concurrent CLDG root evacuation can not run through safepoints, where<br> there may also perform CLDG walk, e.g. heap iteration. So it requires<br> suspendible workers always on, therefore, ShenandoahSuspendibleWorkers<br> flag is removed, along with related test cases. There are many trivial<br> changes just because of this flag.<br><br> 2. A new concurrent phase "concurrent roots" is added to perform<br> concurrent JNI and CLDG root evacuation. In Next 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: <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></blockquote><br></blockquote></blockquote><br></blockquote></pre></blockquote></div><br>-- <br>Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.</body></html>