RFR: Pre-evac JVMTI roots

Zhengyu Gu zgu at redhat.com
Thu Nov 1 00:15:32 UTC 2018


JVMTI's JvmtiTagHashmap is a hashtable, and its hash value is derived 
from key (an oop)'s address. Because GC can move oops, so the hashtable 
has to rehash itself every time the table is walked vs. 
JvmtiExport::weak_oops_do().

To maintain table's to-space invariant, so that the hash value derived 
from key oop should match later query key, which is always a to-space 
oop, we need to pre-evacuate the table.

Webrev: 
http://cr.openjdk.java.net/~zgu/shenandoah/pre_evac_jvmti_roots/webrev.00/index.html

This patch, along with early "Avoid write barrier during full GC", 
clears vmTestbase/nsk/jdi test suite.

Test:
   tier3_gc_shenandoah and vmTestbase/nsk/jdi (fastdebug and release)

Thanks,

-Zhengyu


More information about the shenandoah-dev mailing list