# HG changeset patch # User Gilles Duboscq # Date 1416304559 -3600 # Node ID 03c63fd2f714852e673cf901a352f1ca1de3461d # Parent b9f2356c3a69474e1228ffc6d0b4216a4e9d22fe Backout 810222d74f7c diff -r b9f2356c3a69 -r 03c63fd2f714 src/share/vm/runtime/deoptimization.hpp --- a/src/share/vm/runtime/deoptimization.hpp Mon Nov 17 21:18:29 2014 +0100 +++ b/src/share/vm/runtime/deoptimization.hpp Tue Nov 18 10:55:59 2014 +0100 @@ -127,13 +127,13 @@ static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map); static void deoptimize(JavaThread* thread, frame fr, RegisterMap *reg_map, DeoptReason reason); + private: + // Does the actual work for deoptimizing a single frame + static void deoptimize_single_frame(JavaThread* thread, frame fr, DeoptReason reason); + // 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); - - private: - // Does the actual work for deoptimizing a single frame - static void deoptimize_single_frame(JavaThread* thread, frame fr, DeoptReason reason); // Helper function to revoke biases of all monitors in frames // executing in a particular CodeBlob if UseBiasedLocking is enabled static void revoke_biases_of_monitors(CodeBlob* cb); diff -r b9f2356c3a69 -r 03c63fd2f714 src/share/vm/runtime/sharedRuntime.cpp --- a/src/share/vm/runtime/sharedRuntime.cpp Mon Nov 17 21:18:29 2014 +0100 +++ b/src/share/vm/runtime/sharedRuntime.cpp Tue Nov 18 10:55:59 2014 +0100 @@ -663,9 +663,7 @@ RegisterMap reg_map(thread); frame runtime_frame = thread->last_frame(); frame caller_frame = runtime_frame.sender(®_map); - assert(caller_frame.is_compiled_frame() && !caller_frame.is_deoptimized_frame(),"should be called by compiled frame"); - Deoptimization::revoke_biases_of_monitors(thread, caller_frame, ®_map); - + Deoptimization::deoptimize_frame(thread, caller_frame.id(), Deoptimization::Reason_not_compiled_exception_handler); return SharedRuntime::deopt_blob()->unpack_with_exception_in_tls(); } }