Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(501)

Side by Side Diff: runtime/vm/os_thread_win.cc

Issue 1493703002: Fix Windows SDK build. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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" // NOLINT 5 #include "platform/globals.h" // NOLINT
6 #if defined(TARGET_OS_WINDOWS) 6 #if defined(TARGET_OS_WINDOWS)
7 7
8 #include "vm/growable_array.h" 8 #include "vm/growable_array.h"
9 #include "vm/os_thread.h" 9 #include "vm/os_thread.h"
10 10
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 ASSERT(IsOwnedByCurrentThread()); 269 ASSERT(IsOwnedByCurrentThread());
270 owner_ = OSThread::kInvalidThreadId; 270 owner_ = OSThread::kInvalidThreadId;
271 #endif // defined(DEBUG) 271 #endif // defined(DEBUG)
272 BOOL result = ReleaseSemaphore(data_.semaphore_, 1, NULL); 272 BOOL result = ReleaseSemaphore(data_.semaphore_, 1, NULL);
273 if (result == 0) { 273 if (result == 0) {
274 FATAL1("Mutex unlock failed %d", GetLastError()); 274 FATAL1("Mutex unlock failed %d", GetLastError());
275 } 275 }
276 } 276 }
277 277
278 278
279 ThreadLocalKey MonitorWaitData::monitor_wait_data_key_ = 279 ThreadLocalKey MonitorWaitData::monitor_wait_data_key_ = kUnsetThreadLocalKey;
280 OSThread::kUnsetThreadLocalKey;
281 280
282 281
283 Monitor::Monitor() { 282 Monitor::Monitor() {
284 InitializeCriticalSection(&data_.cs_); 283 InitializeCriticalSection(&data_.cs_);
285 InitializeCriticalSection(&data_.waiters_cs_); 284 InitializeCriticalSection(&data_.waiters_cs_);
286 data_.waiters_head_ = NULL; 285 data_.waiters_head_ = NULL;
287 data_.waiters_tail_ = NULL; 286 data_.waiters_tail_ = NULL;
288 287
289 #if defined(DEBUG) 288 #if defined(DEBUG)
290 // When running with assertions enabled we track the owner. 289 // When running with assertions enabled we track the owner.
(...skipping 29 matching lines...) Expand all
320 // When running with assertions enabled we track the owner. 319 // When running with assertions enabled we track the owner.
321 ASSERT(IsOwnedByCurrentThread()); 320 ASSERT(IsOwnedByCurrentThread());
322 owner_ = OSThread::kInvalidThreadId; 321 owner_ = OSThread::kInvalidThreadId;
323 #endif // defined(DEBUG) 322 #endif // defined(DEBUG)
324 323
325 LeaveCriticalSection(&data_.cs_); 324 LeaveCriticalSection(&data_.cs_);
326 } 325 }
327 326
328 327
329 void MonitorWaitData::ThreadExit() { 328 void MonitorWaitData::ThreadExit() {
330 if (MonitorWaitData::monitor_wait_data_key_ != 329 if (MonitorWaitData::monitor_wait_data_key_ != kUnsetThreadLocalKey) {
331 OSThread::kUnsetThreadLocalKey) {
332 uword raw_wait_data = 330 uword raw_wait_data =
333 OSThread::GetThreadLocal(MonitorWaitData::monitor_wait_data_key_); 331 OSThread::GetThreadLocal(MonitorWaitData::monitor_wait_data_key_);
334 // Clear in case this is called a second time. 332 // Clear in case this is called a second time.
335 OSThread::SetThreadLocal(MonitorWaitData::monitor_wait_data_key_, 0); 333 OSThread::SetThreadLocal(MonitorWaitData::monitor_wait_data_key_, 0);
336 if (raw_wait_data != 0) { 334 if (raw_wait_data != 0) {
337 MonitorWaitData* wait_data = 335 MonitorWaitData* wait_data =
338 reinterpret_cast<MonitorWaitData*>(raw_wait_data); 336 reinterpret_cast<MonitorWaitData*>(raw_wait_data);
339 delete wait_data; 337 delete wait_data;
340 } 338 }
341 } 339 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 } 427 }
430 current = next; 428 current = next;
431 } 429 }
432 LeaveCriticalSection(&waiters_cs_); 430 LeaveCriticalSection(&waiters_cs_);
433 } 431 }
434 432
435 433
436 MonitorWaitData* MonitorData::GetMonitorWaitDataForThread() { 434 MonitorWaitData* MonitorData::GetMonitorWaitDataForThread() {
437 // Ensure that the thread local key for monitor wait data objects is 435 // Ensure that the thread local key for monitor wait data objects is
438 // initialized. 436 // initialized.
439 ASSERT(MonitorWaitData::monitor_wait_data_key_ != 437 ASSERT(MonitorWaitData::monitor_wait_data_key_ != kUnsetThreadLocalKey);
440 OSThread::kUnsetThreadLocalKey);
441 438
442 // Get the MonitorWaitData object containing the event for this 439 // Get the MonitorWaitData object containing the event for this
443 // thread from thread local storage. Create it if it does not exist. 440 // thread from thread local storage. Create it if it does not exist.
444 uword raw_wait_data = 441 uword raw_wait_data =
445 OSThread::GetThreadLocal(MonitorWaitData::monitor_wait_data_key_); 442 OSThread::GetThreadLocal(MonitorWaitData::monitor_wait_data_key_);
446 MonitorWaitData* wait_data = NULL; 443 MonitorWaitData* wait_data = NULL;
447 if (raw_wait_data == 0) { 444 if (raw_wait_data == 0) {
448 HANDLE event = CreateEvent(NULL, FALSE, FALSE, NULL); 445 HANDLE event = CreateEvent(NULL, FALSE, FALSE, NULL);
449 wait_data = new MonitorWaitData(event); 446 wait_data = new MonitorWaitData(event);
450 OSThread::SetThreadLocal(MonitorWaitData::monitor_wait_data_key_, 447 OSThread::SetThreadLocal(MonitorWaitData::monitor_wait_data_key_,
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 #pragma data_seg(".CRT$XLB") 696 #pragma data_seg(".CRT$XLB")
700 PIMAGE_TLS_CALLBACK p_thread_callback_dart = OnDartThreadExit; 697 PIMAGE_TLS_CALLBACK p_thread_callback_dart = OnDartThreadExit;
701 698
702 // Reset the default section. 699 // Reset the default section.
703 #pragma data_seg() 700 #pragma data_seg()
704 701
705 #endif // _WIN64 702 #endif // _WIN64
706 } // extern "C" 703 } // extern "C"
707 704
708 #endif // defined(TARGET_OS_WINDOWS) 705 #endif // defined(TARGET_OS_WINDOWS)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698