2251 |
2251 |
2252 //////////////////////////////////////////////////////////////////////////////////////////////// |
2252 //////////////////////////////////////////////////////////////////////////////////////////////// |
2253 |
2253 |
2254 void JvmtiExport::cleanup_thread(JavaThread* thread) { |
2254 void JvmtiExport::cleanup_thread(JavaThread* thread) { |
2255 assert(JavaThread::current() == thread, "thread is not current"); |
2255 assert(JavaThread::current() == thread, "thread is not current"); |
2256 |
2256 MutexLocker mu(JvmtiThreadState_lock); |
2257 |
2257 |
2258 // This has to happen after the thread state is removed, which is |
2258 if (thread->jvmti_thread_state() != NULL) { |
2259 // why it is not in post_thread_end_event like its complement |
2259 // This has to happen after the thread state is removed, which is |
2260 // Maybe both these functions should be rolled into the posts? |
2260 // why it is not in post_thread_end_event like its complement |
2261 JvmtiEventController::thread_ended(thread); |
2261 // Maybe both these functions should be rolled into the posts? |
|
2262 JvmtiEventController::thread_ended(thread); |
|
2263 } |
2262 } |
2264 } |
2263 |
2265 |
2264 void JvmtiExport::oops_do(OopClosure* f) { |
2266 void JvmtiExport::oops_do(OopClosure* f) { |
2265 JvmtiCurrentBreakpoints::oops_do(f); |
2267 JvmtiCurrentBreakpoints::oops_do(f); |
2266 JvmtiVMObjectAllocEventCollector::oops_do_for_all_threads(f); |
2268 JvmtiVMObjectAllocEventCollector::oops_do_for_all_threads(f); |