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