--- old/src/hotspot/share/runtime/deoptimization.hpp 2019-04-25 11:54:28.934304261 +0200 +++ new/src/hotspot/share/runtime/deoptimization.hpp 2019-04-25 11:54:28.197279439 +0200 @@ -135,12 +135,19 @@ Unpack_LIMIT = 4 }; + static void deoptimize_all_marked(); + + private: // Checks all compiled methods. Invalid methods are deleted and // corresponding activations are deoptimized. static int deoptimize_dependents(); + static void inflate_monitors_handshake(JavaThread* thread, frame fr, RegisterMap* map); + static void inflate_monitors(JavaThread* thread, frame fr, RegisterMap* map); + static void deopt_thread(bool in_handshake, JavaThread* thread, frame fr, RegisterMap *map, DeoptReason reason); + public: // Deoptimizes a frame lazily. nmethod gets patched deopt happens on return to the frame - static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map); + static void deoptimize(JavaThread* thread, frame fr, RegisterMap *map, bool in_handshake = false); static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map, DeoptReason reason); #if INCLUDE_JVMCI @@ -153,7 +160,8 @@ // Helper function to revoke biases of all monitors in frame if UseBiasedLocking // is enabled - static void revoke_biases_of_monitors(JavaThread* thread, frame fr, RegisterMap* map); + static void fix_monitors(JavaThread* thread, frame fr, RegisterMap* map) + { inflate_monitors(thread, fr, map); } #if COMPILER2_OR_JVMCI JVMCI_ONLY(public:)