RFR: 8218969: Free JVMCI native structures in nmethod::flush

Erik Österlund erik.osterlund at oracle.com
Thu Feb 14 11:08:58 UTC 2019


Hi,

An nmethod goes from being is_alive() to being !is_alive() and 
eventually being freed in nmethod::flush. Native structures for nmethods 
are freed in nmethod::flush when we free the nmethod. Except for a few 
things, including JVMCI handles, that are freed already when becoming 
!is_alive (and some logic to deal with this potentially happening twice 
for a given nmethod), and finally asserting during flush that it was 
already cleared.

This enhancement proposes to treat these JVMCI handles like we treat any 
other native structure and simply free it in nmethod::flush, when we 
free the nmethod, so that the nmethod and handles have a 1:1 mapping for 
their life cycles.

Bug:
https://bugs.openjdk.java.net/browse/JDK-8218969

Webrev:
http://cr.openjdk.java.net/~eosterlund/8218969/webrev.00/

Thanks,
/Erik


More information about the hotspot-compiler-dev mailing list