RFR: 8256415: Shenandoah: Should evacuate/update codecache concurrently when class unloading is off [v3]

Zhengyu Gu zgu at openjdk.java.net
Wed Nov 18 00:32:25 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.
> 
> Key points:
> 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

Zhengyu Gu has updated the pull request incrementally with one additional commit since the last revision:

  Update comment

-------------

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/1271/files
  - new: https://git.openjdk.java.net/jdk/pull/1271/files/76ba8735..9884043f

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=1271&range=02
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=1271&range=01-02

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1271.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1271/head:pull/1271

PR: https://git.openjdk.java.net/jdk/pull/1271


More information about the shenandoah-dev mailing list