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

Side by Side Diff: third_party/WebKit/Source/wtf/ThreadingWin.cpp

Issue 2680843006: Tidy DEFINE_(THREAD_SAFE_)STATIC_LOCAL() implementations. (Closed)
Patch Set: simplify DEFINE_THREAD_SAFE_STATIC_LOCAL() Created 3 years, 10 months 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Google Inc. All rights reserved. 3 * Copyright (C) 2009 Google Inc. All rights reserved.
4 * Copyright (C) 2009 Torch Mobile, Inc. All rights reserved. 4 * Copyright (C) 2009 Torch Mobile, Inc. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 9 *
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 // <http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx>. 118 // <http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx>.
119 #pragma pack(push, 8) 119 #pragma pack(push, 8)
120 typedef struct tagTHREADNAME_INFO { 120 typedef struct tagTHREADNAME_INFO {
121 DWORD dwType; // must be 0x1000 121 DWORD dwType; // must be 0x1000
122 LPCSTR szName; // pointer to name (in user addr space) 122 LPCSTR szName; // pointer to name (in user addr space)
123 DWORD dwThreadID; // thread ID (-1=caller thread) 123 DWORD dwThreadID; // thread ID (-1=caller thread)
124 DWORD dwFlags; // reserved for future use, must be zero 124 DWORD dwFlags; // reserved for future use, must be zero
125 } THREADNAME_INFO; 125 } THREADNAME_INFO;
126 #pragma pack(pop) 126 #pragma pack(pop)
127 127
128 static Mutex* atomicallyInitializedStaticMutex;
129
130 namespace internal { 128 namespace internal {
131 129
132 ThreadIdentifier currentThreadSyscall() { 130 ThreadIdentifier currentThreadSyscall() {
133 return static_cast<ThreadIdentifier>(GetCurrentThreadId()); 131 return static_cast<ThreadIdentifier>(GetCurrentThreadId());
134 } 132 }
135 133
136 } // namespace internal 134 } // namespace internal
137 135
138 void lockAtomicallyInitializedStaticMutex() {
139 DCHECK(atomicallyInitializedStaticMutex);
140 atomicallyInitializedStaticMutex->lock();
141 }
142
143 void unlockAtomicallyInitializedStaticMutex() {
144 atomicallyInitializedStaticMutex->unlock();
145 }
146
147 void initializeThreading() { 136 void initializeThreading() {
148 // This should only be called once. 137 // This should only be called once.
149 DCHECK(!atomicallyInitializedStaticMutex);
150
151 WTFThreadData::initialize(); 138 WTFThreadData::initialize();
152 139
153 atomicallyInitializedStaticMutex = new Mutex;
154 initializeDates(); 140 initializeDates();
155 // Force initialization of static DoubleToStringConverter converter variable 141 // Force initialization of static DoubleToStringConverter converter variable
156 // inside EcmaScriptConverter function while we are in single thread mode. 142 // inside EcmaScriptConverter function while we are in single thread mode.
157 double_conversion::DoubleToStringConverter::EcmaScriptConverter(); 143 double_conversion::DoubleToStringConverter::EcmaScriptConverter();
158 } 144 }
159 145
160 ThreadIdentifier currentThread() { 146 ThreadIdentifier currentThread() {
161 return wtfThreadData().threadId(); 147 return wtfThreadData().threadId();
162 } 148 }
163 149
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 // forever. 376 // forever.
391 if (absoluteTime - currentTime > static_cast<double>(INT_MAX) / 1000.0) 377 if (absoluteTime - currentTime > static_cast<double>(INT_MAX) / 1000.0)
392 return INFINITE; 378 return INFINITE;
393 379
394 return static_cast<DWORD>((absoluteTime - currentTime) * 1000.0); 380 return static_cast<DWORD>((absoluteTime - currentTime) * 1000.0);
395 } 381 }
396 382
397 #if DCHECK_IS_ON() 383 #if DCHECK_IS_ON()
398 static bool s_threadCreated = false; 384 static bool s_threadCreated = false;
399 385
400 bool isAtomicallyInitializedStaticMutexLockHeld() {
401 return atomicallyInitializedStaticMutex &&
402 atomicallyInitializedStaticMutex->locked();
403 }
404
405 bool isBeforeThreadCreated() { 386 bool isBeforeThreadCreated() {
406 return !s_threadCreated; 387 return !s_threadCreated;
407 } 388 }
408 389
409 void willCreateThread() { 390 void willCreateThread() {
410 s_threadCreated = true; 391 s_threadCreated = true;
411 } 392 }
412 #endif 393 #endif
413 394
414 } // namespace WTF 395 } // namespace WTF
415 396
416 #endif // OS(WIN) 397 #endif // OS(WIN)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698