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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 } | 96 } |
97 if (old == 0) { | 97 if (old == 0) { |
98 // We just decremented from 0, this means we've got a mismatched pair | 98 // We just decremented from 0, this means we've got a mismatched pair |
99 // of calls to EnableThreadInterrupts and DisableThreadInterrupts. | 99 // of calls to EnableThreadInterrupts and DisableThreadInterrupts. |
100 FATAL("Invalid call to OSThread::EnableThreadInterrupts()"); | 100 FATAL("Invalid call to OSThread::EnableThreadInterrupts()"); |
101 } | 101 } |
102 } | 102 } |
103 | 103 |
104 | 104 |
105 bool OSThread::ThreadInterruptsEnabled() { | 105 bool OSThread::ThreadInterruptsEnabled() { |
106 return AtomicOperations::LoadAcquire(&thread_interrupt_disabled_) == 0; | 106 return AtomicOperations::LoadRelaxed(&thread_interrupt_disabled_) == 0; |
107 } | 107 } |
108 | 108 |
109 | 109 |
110 static void DeleteThread(void* thread) { | 110 static void DeleteThread(void* thread) { |
111 delete reinterpret_cast<OSThread*>(thread); | 111 delete reinterpret_cast<OSThread*>(thread); |
112 } | 112 } |
113 | 113 |
114 | 114 |
115 void OSThread::InitOnce() { | 115 void OSThread::InitOnce() { |
116 // Allocate the global OSThread lock. | 116 // Allocate the global OSThread lock. |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 | 287 |
288 OSThread* OSThreadIterator::Next() { | 288 OSThread* OSThreadIterator::Next() { |
289 ASSERT(OSThread::thread_list_lock_ != NULL); | 289 ASSERT(OSThread::thread_list_lock_ != NULL); |
290 ASSERT(OSThread::thread_list_lock_->IsOwnedByCurrentThread()); | 290 ASSERT(OSThread::thread_list_lock_->IsOwnedByCurrentThread()); |
291 OSThread* current = next_; | 291 OSThread* current = next_; |
292 next_ = next_->thread_list_next_; | 292 next_ = next_->thread_list_next_; |
293 return current; | 293 return current; |
294 } | 294 } |
295 | 295 |
296 } // namespace dart | 296 } // namespace dart |
OLD | NEW |