Changeset 161869 in webkit


Ignore:
Timestamp:
Jan 13, 2014 2:12:03 AM (10 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r161852.
http://trac.webkit.org/changeset/161852
https://bugs.webkit.org/show_bug.cgi?id=126877

Broke ToT with system Safari (Requested by kling on #webkit).

  • wtf/Threading.h:
  • wtf/ThreadingPthreads.cpp:

(WTF::initializeThreading):
(WTF::lockAtomicallyInitializedStaticMutex):
(WTF::unlockAtomicallyInitializedStaticMutex):

  • wtf/ThreadingWin.cpp:

(WTF::lockAtomicallyInitializedStaticMutex):
(WTF::unlockAtomicallyInitializedStaticMutex):
(WTF::initializeThreading):

Location:
trunk/Source/WTF
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r161861 r161869  
     12014-01-13  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r161852.
     4        http://trac.webkit.org/changeset/161852
     5        https://bugs.webkit.org/show_bug.cgi?id=126877
     6
     7        Broke ToT with system Safari (Requested by kling on #webkit).
     8
     9        * wtf/Threading.h:
     10        * wtf/ThreadingPthreads.cpp:
     11        (WTF::initializeThreading):
     12        (WTF::lockAtomicallyInitializedStaticMutex):
     13        (WTF::unlockAtomicallyInitializedStaticMutex):
     14        * wtf/ThreadingWin.cpp:
     15        (WTF::lockAtomicallyInitializedStaticMutex):
     16        (WTF::unlockAtomicallyInitializedStaticMutex):
     17        (WTF::initializeThreading):
     18
    1192014-01-12  Commit Queue  <commit-queue@webkit.org>
    220
  • trunk/Source/WTF/wtf/Threading.h

    r161852 r161869  
    7070#include <wtf/ThreadingPrimitives.h>
    7171
     72// For portability, we do not use thread-safe statics natively supported by some compilers (e.g. gcc).
     73#define AtomicallyInitializedStatic(T, name) \
     74    WTF::lockAtomicallyInitializedStaticMutex(); \
     75    static T name; \
     76    WTF::unlockAtomicallyInitializedStaticMutex();
     77
    7278namespace WTF {
    7379
     
    95101WTF_EXPORT_PRIVATE void detachThread(ThreadIdentifier);
    96102
     103WTF_EXPORT_PRIVATE void lockAtomicallyInitializedStaticMutex();
     104WTF_EXPORT_PRIVATE void unlockAtomicallyInitializedStaticMutex();
     105
    97106} // namespace WTF
    98107
  • trunk/Source/WTF/wtf/ThreadingPthreads.cpp

    r161855 r161869  
    9999typedef HashMap<ThreadIdentifier, std::unique_ptr<PthreadState>> ThreadMap;
    100100
     101static Mutex* atomicallyInitializedStaticMutex;
     102
    101103void unsafeThreadWasDetached(ThreadIdentifier);
    102104void threadDidExit(ThreadIdentifier);
     
    111113void initializeThreading()
    112114{
    113     static bool isInitialized;
    114 
    115     if (isInitialized)
     115    if (atomicallyInitializedStaticMutex)
    116116        return;
    117117
     
    122122    // so ensure it has been initialized from here.
    123123    StringImpl::empty();
    124 
     124    atomicallyInitializedStaticMutex = new Mutex;
    125125    threadMapMutex();
    126126    initializeRandomNumberGenerator();
     
    132132}
    133133
     134void lockAtomicallyInitializedStaticMutex()
     135{
     136    ASSERT(atomicallyInitializedStaticMutex);
     137    atomicallyInitializedStaticMutex->lock();
     138}
     139
     140void unlockAtomicallyInitializedStaticMutex()
     141{
     142    atomicallyInitializedStaticMutex->unlock();
     143}
     144
    134145static ThreadMap& threadMap()
    135146{
  • trunk/Source/WTF/wtf/ThreadingWin.cpp

    r161852 r161869  
    149149}
    150150
     151static Mutex* atomicallyInitializedStaticMutex;
     152
     153void lockAtomicallyInitializedStaticMutex()
     154{
     155    ASSERT(atomicallyInitializedStaticMutex);
     156    atomicallyInitializedStaticMutex->lock();
     157}
     158
     159void unlockAtomicallyInitializedStaticMutex()
     160{
     161    atomicallyInitializedStaticMutex->unlock();
     162}
     163
    151164static Mutex& threadMapMutex()
    152165{
     
    157170void initializeThreading()
    158171{
    159     static bool isInitialized;
    160    
    161     if (isInitialized)
     172    if (atomicallyInitializedStaticMutex)
    162173        return;
    163174
     
    166177    // so ensure it has been initialized from here.
    167178    StringImpl::empty();
     179    atomicallyInitializedStaticMutex = new Mutex;
    168180    threadMapMutex();
    169181    initializeRandomNumberGenerator();
     
    171183    s_dtoaP5Mutex = new Mutex;
    172184    initializeDates();
    173    
    174     isInitialized = true;
    175185}
    176186
Note: See TracChangeset for help on using the changeset viewer.