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

Zhengyu Gu zgu at redhat.com
Wed Jun 12 17:58:04 UTC 2019

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.



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

More information about the hotspot-gc-dev mailing list