RFR: 8256415: Shenandoah: Should evacuate/update codecache concurrently when class unloading is off
zgu at openjdk.java.net
Tue Nov 17 19:35:10 UTC 2020
During isolating GC work (JDK-8255765), I found that Shenandoah still evacuate/update codecache roots at final mark safepoint when class unloading is off.
Actually, it can be done concurrently by utilizing nmethod_entry_barrier.
Shenandoah should always enable nmethod_entry_barrier for evacuation, regardless class unloading status, and perform code cache evacuation/updating during strong root processing.
1) Always enable nmethod entry barrier
2) Always attach ShenandoahNMethod to nmethod, regardless weather class unloading is enabled
3) Only evacuate/update thread and serial weak roots at final mark pause.
4) Code roots are evacuated/updated concurrently during weak roots (when class unloading is on) or strong roots (when class unloading is off)
- [x] hotspot_gc_shenandoah
- [x] tier1 with ShenandoahGC and +/-ClassUnloading
- Always disarm on-stack nmethods during init evaculation
- Merge branch 'master' into JDK-8256415-conc-code-no-classunloading
- Evacuate/update code roots concurrently when class unloading is off
Stats: 170 lines in 10 files changed: 56 ins; 90 del; 24 mod
Fetch: git fetch https://git.openjdk.java.net/jdk pull/1271/head:pull/1271
More information about the hotspot-gc-dev