RFR 8234359: [JVMCI] invalidate_nmethod_mirror shouldn't use a phantom reference

Tom Rodriguez tom.rodriguez at oracle.com
Thu Nov 21 05:21:59 UTC 2019


http://cr.openjdk.java.net/~never/8234359/webrev
https://bugs.openjdk.java.net/browse/JDK-8234359

While testing the latest JVMCI in JDK11, crashes were occurring during 
draining of the SATB buffers.  The problem was tracked down to 
invalidate_nmethod_mirror being called on an nmethod whose InstalledCode 
instance was also dead in the current GC. Reading this oop using 
NativeAccess<ON_PHANTOM_OOP_REF> lead to that oop being enqueued in the 
SATB buffer.  In JDK 14 it appears some other change in G1 disables 
those barriers at the point this code is executed but in JDK11 no such 
logic exists.  This code never resurrects that oop so using the normal 
AS_NO_KEEPALIVE semantics is correct and avoids attempting to enqueue 
the potentially dead object.

tom


More information about the hotspot-compiler-dev mailing list