OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 "platform/globals.h" | 5 #include "platform/globals.h" |
6 #if defined(TARGET_OS_WINDOWS) | 6 #if defined(TARGET_OS_WINDOWS) |
7 | 7 |
8 #include "platform/thread.h" | 8 #include "platform/thread.h" |
9 | 9 |
10 #include <process.h> // NOLINT | 10 #include <process.h> // NOLINT |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 } else if (current == waiters_head_) { | 286 } else if (current == waiters_head_) { |
287 waiters_head_ = waiters_head_->next_; | 287 waiters_head_ = waiters_head_->next_; |
288 } else if (current == waiters_tail_) { | 288 } else if (current == waiters_tail_) { |
289 ASSERT(previous != NULL); | 289 ASSERT(previous != NULL); |
290 waiters_tail_ = previous; | 290 waiters_tail_ = previous; |
291 previous->next_ = NULL; | 291 previous->next_ = NULL; |
292 } else { | 292 } else { |
293 ASSERT(previous != NULL); | 293 ASSERT(previous != NULL); |
294 previous->next_ = current->next_; | 294 previous->next_ = current->next_; |
295 } | 295 } |
| 296 // Clear next. |
| 297 wait_data->next_ = NULL; |
296 break; | 298 break; |
297 } | 299 } |
298 previous = current; | 300 previous = current; |
299 current = current->next_; | 301 current = current->next_; |
300 } | 302 } |
301 LeaveCriticalSection(&waiters_cs_); | 303 LeaveCriticalSection(&waiters_cs_); |
302 } | 304 } |
303 | 305 |
304 | 306 |
305 void MonitorData::SignalAndRemoveFirstWaiter() { | 307 void MonitorData::SignalAndRemoveFirstWaiter() { |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 // timeout before we signal it, that object will get an extra | 438 // timeout before we signal it, that object will get an extra |
437 // signal. This will be treated as a spurious wake-up and is OK | 439 // signal. This will be treated as a spurious wake-up and is OK |
438 // since all uses of monitors should recheck the condition after a | 440 // since all uses of monitors should recheck the condition after a |
439 // Wait. | 441 // Wait. |
440 data_.SignalAndRemoveAllWaiters(); | 442 data_.SignalAndRemoveAllWaiters(); |
441 } | 443 } |
442 | 444 |
443 } // namespace dart | 445 } // namespace dart |
444 | 446 |
445 #endif // defined(TARGET_OS_WINDOWS) | 447 #endif // defined(TARGET_OS_WINDOWS) |
OLD | NEW |