Mercurial > hg > truffle
comparison src/share/vm/runtime/thread.cpp @ 363:032ddb9432ad
Merge
author | apetrusenko |
---|---|
date | Wed, 17 Sep 2008 19:59:35 +0400 |
parents | 5d254928c888 b33eef719520 |
children | 99dd4bbd9eec |
comparison
equal
deleted
inserted
replaced
362:f8199438385b | 363:032ddb9432ad |
---|---|
2775 } | 2775 } |
2776 // Someday we could have a table or list of all non-JavaThreads. | 2776 // Someday we could have a table or list of all non-JavaThreads. |
2777 // For now, just manually iterate through them. | 2777 // For now, just manually iterate through them. |
2778 tc->do_thread(VMThread::vm_thread()); | 2778 tc->do_thread(VMThread::vm_thread()); |
2779 Universe::heap()->gc_threads_do(tc); | 2779 Universe::heap()->gc_threads_do(tc); |
2780 { | 2780 WatcherThread *wt = WatcherThread::watcher_thread(); |
2781 // Grab the Terminator_lock to prevent watcher_thread from being terminated. | 2781 // Strictly speaking, the following NULL check isn't sufficient to make sure |
2782 MutexLockerEx mu(Terminator_lock, Mutex::_no_safepoint_check_flag); | 2782 // the data for WatcherThread is still valid upon being examined. However, |
2783 WatcherThread *wt = WatcherThread::watcher_thread(); | 2783 // considering that WatchThread terminates when the VM is on the way to |
2784 if (wt != NULL) | 2784 // exit at safepoint, the chance of the above is extremely small. The right |
2785 tc->do_thread(wt); | 2785 // way to prevent termination of WatcherThread would be to acquire |
2786 } | 2786 // Terminator_lock, but we can't do that without violating the lock rank |
2787 // checking in some cases. | |
2788 if (wt != NULL) | |
2789 tc->do_thread(wt); | |
2790 | |
2787 // If CompilerThreads ever become non-JavaThreads, add them here | 2791 // If CompilerThreads ever become non-JavaThreads, add them here |
2788 } | 2792 } |
2789 | 2793 |
2790 jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { | 2794 jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) { |
2791 | 2795 |