RFR (S) 8043070: nmethod::verify_interrupt_point() shouldn't enter safepoint
igor.veresov at oracle.com
Thu Nov 16 19:08:09 UTC 2017
The problems here is that the sweeper can transition a newly created nmethod to not_entrant state before it’s installed. This breaks the logic in nmethod::verify_interrupt_point() called at the end of the installation process. As a result locks might be taken in that can safepoint and safepoints are forbidden during the method install.
The solution is to introduce an new nmethod state: not_installed. The goal is to be able to prevent certain things like sweeping or parts of the verification happening during the nmethod installation.
The change passed the failing test and the internal mach5 pre-intergration testing.
Note, this also fixes: https://bugs.openjdk.java.net/browse/JDK-8028001
More information about the hotspot-compiler-dev