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

Zhengyu Gu zgu at redhat.com
Wed Jun 12 00:50:14 UTC 2019


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