92 93 void VM_ThreadStop::doit() { 94 assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint"); 95 JavaThread* target = java_lang_Thread::thread(target_thread()); 96 // Note that this now allows multiple ThreadDeath exceptions to be 97 // thrown at a thread. 98 if (target != NULL) { 99 // the thread has run and is not already in the process of exiting 100 target->send_thread_stop(throwable()); 101 } 102 } 103 104 void VM_Deoptimize::doit() { 105 // We do not want any GCs to happen while we are in the middle of this VM operation 106 ResourceMark rm; 107 DeoptimizationMarker dm; 108 109 // Deoptimize all activations depending on marked nmethods 110 Deoptimization::deoptimize_dependents(); 111 112 // Make the dependent methods zombies 113 CodeCache::make_marked_nmethods_zombies(); 114 } 115 116 void VM_MarkActiveNMethods::doit() { 117 NMethodSweeper::mark_active_nmethods(); 118 } 119 120 VM_DeoptimizeFrame::VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id) { 121 _thread = thread; 122 _id = id; 123 } 124 125 126 void VM_DeoptimizeFrame::doit() { 127 Deoptimization::deoptimize_frame_internal(_thread, _id); 128 } 129 130 131 #ifndef PRODUCT 132 133 void VM_DeoptimizeAll::doit() { | 92 93 void VM_ThreadStop::doit() { 94 assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint"); 95 JavaThread* target = java_lang_Thread::thread(target_thread()); 96 // Note that this now allows multiple ThreadDeath exceptions to be 97 // thrown at a thread. 98 if (target != NULL) { 99 // the thread has run and is not already in the process of exiting 100 target->send_thread_stop(throwable()); 101 } 102 } 103 104 void VM_Deoptimize::doit() { 105 // We do not want any GCs to happen while we are in the middle of this VM operation 106 ResourceMark rm; 107 DeoptimizationMarker dm; 108 109 // Deoptimize all activations depending on marked nmethods 110 Deoptimization::deoptimize_dependents(); 111 112 // Make the dependent methods not entrant 113 CodeCache::make_marked_nmethods_not_entrant(); 114 } 115 116 void VM_MarkActiveNMethods::doit() { 117 NMethodSweeper::mark_active_nmethods(); 118 } 119 120 VM_DeoptimizeFrame::VM_DeoptimizeFrame(JavaThread* thread, intptr_t* id) { 121 _thread = thread; 122 _id = id; 123 } 124 125 126 void VM_DeoptimizeFrame::doit() { 127 Deoptimization::deoptimize_frame_internal(_thread, _id); 128 } 129 130 131 #ifndef PRODUCT 132 133 void VM_DeoptimizeAll::doit() { |