< prev index next >

src/hotspot/share/runtime/deoptimization.cpp

Print this page
rev 57126 : [mq]: 8234796-v2

*** 799,833 **** return bt; JRT_END ! class DeoptimizeMarkedTC : public ThreadClosure { public: ! virtual void do_thread(Thread* thread) { ! assert(thread->is_Java_thread(), "must be"); JavaThread* jt = (JavaThread*)thread; jt->deoptimize_marked_methods(); } }; void Deoptimization::deoptimize_all_marked() { ResourceMark rm; DeoptimizationMarker dm; if (SafepointSynchronize::is_at_safepoint()) { ! DeoptimizeMarkedTC deopt; // Make the dependent methods not entrant CodeCache::make_marked_nmethods_not_entrant(); Threads::java_threads_do(&deopt); } else { // Make the dependent methods not entrant { MutexLocker mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); CodeCache::make_marked_nmethods_not_entrant(); } ! DeoptimizeMarkedTC deopt; Handshake::execute(&deopt); } } Deoptimization::DeoptAction Deoptimization::_unloaded_action --- 799,833 ---- return bt; JRT_END ! class DeoptimizeMarkedClosure : public HandshakeClosure { public: ! DeoptimizeMarkedClosure() : HandshakeClosure("Deoptimize") {} ! void do_thread(Thread* thread) { JavaThread* jt = (JavaThread*)thread; jt->deoptimize_marked_methods(); } }; void Deoptimization::deoptimize_all_marked() { ResourceMark rm; DeoptimizationMarker dm; if (SafepointSynchronize::is_at_safepoint()) { ! DeoptimizeMarkedClosure deopt; // Make the dependent methods not entrant CodeCache::make_marked_nmethods_not_entrant(); Threads::java_threads_do(&deopt); } else { // Make the dependent methods not entrant { MutexLocker mu(CodeCache_lock, Mutex::_no_safepoint_check_flag); CodeCache::make_marked_nmethods_not_entrant(); } ! DeoptimizeMarkedClosure deopt; Handshake::execute(&deopt); } } Deoptimization::DeoptAction Deoptimization::_unloaded_action
< prev index next >