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