| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/os_thread.h" | 5 #include "vm/os_thread.h" |
| 6 | 6 |
| 7 #include "vm/atomic.h" | 7 #include "vm/atomic.h" |
| 8 #include "vm/lockers.h" | 8 #include "vm/lockers.h" |
| 9 #include "vm/log.h" | 9 #include "vm/log.h" |
| 10 #include "vm/thread_interrupter.h" | 10 #include "vm/thread_interrupter.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 thread_key_ = kUnsetThreadLocalKey; | 107 thread_key_ = kUnsetThreadLocalKey; |
| 108 | 108 |
| 109 // Delete the global OSThread lock. | 109 // Delete the global OSThread lock. |
| 110 ASSERT(thread_list_lock_ != NULL); | 110 ASSERT(thread_list_lock_ != NULL); |
| 111 delete thread_list_lock_; | 111 delete thread_list_lock_; |
| 112 thread_list_lock_ = NULL; | 112 thread_list_lock_ = NULL; |
| 113 } | 113 } |
| 114 } | 114 } |
| 115 | 115 |
| 116 | 116 |
| 117 bool OSThread::IsThreadInList(ThreadId join_id) { | 117 bool OSThread::IsThreadInList(ThreadJoinId join_id) { |
| 118 if (join_id == OSThread::kInvalidThreadJoinId) { | 118 if (join_id == OSThread::kInvalidThreadJoinId) { |
| 119 return false; | 119 return false; |
| 120 } | 120 } |
| 121 OSThreadIterator it; | 121 OSThreadIterator it; |
| 122 while (it.HasNext()) { | 122 while (it.HasNext()) { |
| 123 ASSERT(OSThread::thread_list_lock_->IsOwnedByCurrentThread()); | 123 ASSERT(OSThread::thread_list_lock_->IsOwnedByCurrentThread()); |
| 124 OSThread* t = it.Next(); | 124 OSThread* t = it.Next(); |
| 125 // An address test is not sufficient because the allocator may recycle | 125 // An address test is not sufficient because the allocator may recycle |
| 126 // the address for another Thread. Test against the thread's join id. | 126 // the address for another Thread. Test against the thread's join id. |
| 127 if (t->join_id() == join_id) { | 127 if (t->join_id() == join_id) { |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 | 223 |
| 224 OSThread* OSThreadIterator::Next() { | 224 OSThread* OSThreadIterator::Next() { |
| 225 ASSERT(OSThread::thread_list_lock_ != NULL); | 225 ASSERT(OSThread::thread_list_lock_ != NULL); |
| 226 ASSERT(OSThread::thread_list_lock_->IsOwnedByCurrentThread()); | 226 ASSERT(OSThread::thread_list_lock_->IsOwnedByCurrentThread()); |
| 227 OSThread* current = next_; | 227 OSThread* current = next_; |
| 228 next_ = next_->thread_list_next_; | 228 next_ = next_->thread_list_next_; |
| 229 return current; | 229 return current; |
| 230 } | 230 } |
| 231 | 231 |
| 232 } // namespace dart | 232 } // namespace dart |
| OLD | NEW |