[15] RFR 8239926: Shenandoah: Shenandoah needs to mark nmethod's metadata

Zhengyu Gu zgu at redhat.com
Tue Feb 25 17:13:03 UTC 2020


Shenandoah encounters a few test failures with tools/javac. Verifier 
catches unmarked oops in nmethod's metadata during root evacuation in 
final mark phase.

The problem is that, Shenandoah marks on stack nmethods in init mark 
pause, but it does not mark nmethod's metadata during concurrent mark 
phase, when new nmethod is about to be executed.

The solution:
1) Use nmethod_entry_barrier to keep nmethod's metadata alive when the 
nmethod is about to be executed, when nmethod entry barrier is supported.

2) Remark on stack nmethod's metadata at final mark pause.

Bug: https://bugs.openjdk.java.net/browse/JDK-8239926
Webrev: http://cr.openjdk.java.net/~zgu/JDK-8239926/webrev.00/

Test:
   hotspot_gc_shenandoah (fastdebug and release)
   tools/javac with ShenandoahCodeRootsStyle = 1 and 2 (fastdebug and 
release)

Thanks,

-Zhengyu



More information about the shenandoah-dev mailing list