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

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

Issue 874203002: Add a thread-safety assertion in DEFINE_STATIC_LOCAL (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebased Created 5 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 | Annotate | Revision Log
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 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 if (absoluteTime < currentTime) 384 if (absoluteTime < currentTime)
385 return 0; 385 return 0;
386 386
387 // Time is too far in the future (and would overflow unsigned long) - wait f orever. 387 // Time is too far in the future (and would overflow unsigned long) - wait f orever.
388 if (absoluteTime - currentTime > static_cast<double>(INT_MAX) / 1000.0) 388 if (absoluteTime - currentTime > static_cast<double>(INT_MAX) / 1000.0)
389 return INFINITE; 389 return INFINITE;
390 390
391 return static_cast<DWORD>((absoluteTime - currentTime) * 1000.0); 391 return static_cast<DWORD>((absoluteTime - currentTime) * 1000.0);
392 } 392 }
393 393
394 #if ENABLE(ASSERT)
395 static bool s_threadCreated = false;
396
397 struct ThreadCreationRecorder {
398 ThreadCreationRecorder()
399 {
400 ASSERT(!s_threadCreated);
401 s_threadCreated = true;
402 }
403 };
404
405 bool isAtomicallyInitializedStaticMutexLockHeld()
406 {
407 return atomicallyInitializedStaticMutex && atomicallyInitializedStaticMutex- >locked();
408 }
409
410 bool isBeforeThreadCreated()
411 {
412 return !s_threadCreated;
413 }
414
415 void willCreateThread()
416 {
417 static ThreadCreationRecorder recorder;
418 }
419 #endif
420
394 } // namespace WTF 421 } // namespace WTF
395 422
396 #endif // OS(WIN) 423 #endif // OS(WIN)
OLDNEW
« Source/wtf/ThreadingPthreads.cpp ('K') | « Source/wtf/ThreadingPthreads.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698