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

Roman Kennke rkennke at redhat.com
Fri Jun 14 18:36:51 UTC 2019


No, not yet. Haven't had a chance to actually look at the changes yet.

You're dealing with CLDG and JNI handles. I believe weak roots could also be evacuated concurrently now? Possibly some other roots?

Roman


Am 14. Juni 2019 20:22:52 MESZ schrieb Zhengyu Gu <zgu at redhat.com>:
>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.

-- 
Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20190614/1a551e6c/attachment.htm>


More information about the hotspot-gc-dev mailing list