| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * Copyright (C) 2007, 2009 Apple Inc. All rights reserved. |    2  * Copyright (C) 2007, 2009 Apple Inc. All rights reserved. | 
|    3  * Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com) |    3  * Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com) | 
|    4  * Copyright (C) 2011 Research In Motion Limited. All rights reserved. |    4  * Copyright (C) 2011 Research In Motion Limited. 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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  103 void unsafeThreadWasDetached(ThreadIdentifier); |  103 void unsafeThreadWasDetached(ThreadIdentifier); | 
|  104 void threadDidExit(ThreadIdentifier); |  104 void threadDidExit(ThreadIdentifier); | 
|  105 void threadWasJoined(ThreadIdentifier); |  105 void threadWasJoined(ThreadIdentifier); | 
|  106  |  106  | 
|  107 static Mutex& threadMapMutex() |  107 static Mutex& threadMapMutex() | 
|  108 { |  108 { | 
|  109     DEFINE_STATIC_LOCAL(Mutex, mutex, ()); |  109     DEFINE_STATIC_LOCAL(Mutex, mutex, ()); | 
|  110     return mutex; |  110     return mutex; | 
|  111 } |  111 } | 
|  112  |  112  | 
|  113 #if OS(QNX) && CPU(ARM_THUMB2) |  | 
|  114 static void enableIEEE754Denormal() |  | 
|  115 { |  | 
|  116     // Clear the ARM_VFP_FPSCR_FZ flag in FPSCR. |  | 
|  117     unsigned fpscr; |  | 
|  118     asm volatile("vmrs %0, fpscr" : "=r"(fpscr)); |  | 
|  119     fpscr &= ~0x01000000u; |  | 
|  120     asm volatile("vmsr fpscr, %0" : : "r"(fpscr)); |  | 
|  121 } |  | 
|  122 #endif |  | 
|  123  |  | 
|  124 void initializeThreading() |  113 void initializeThreading() | 
|  125 { |  114 { | 
|  126     if (atomicallyInitializedStaticMutex) |  115     if (atomicallyInitializedStaticMutex) | 
|  127         return; |  116         return; | 
|  128  |  117  | 
|  129 #if OS(QNX) && CPU(ARM_THUMB2) |  | 
|  130     enableIEEE754Denormal(); |  | 
|  131 #endif |  | 
|  132  |  | 
|  133     WTF::double_conversion::initialize(); |  118     WTF::double_conversion::initialize(); | 
|  134     // StringImpl::empty() does not construct its static string in a threadsafe 
     fashion, |  119     // StringImpl::empty() does not construct its static string in a threadsafe 
     fashion, | 
|  135     // so ensure it has been initialized from here. |  120     // so ensure it has been initialized from here. | 
|  136     StringImpl::empty(); |  121     StringImpl::empty(); | 
|  137     atomicallyInitializedStaticMutex = new Mutex; |  122     atomicallyInitializedStaticMutex = new Mutex; | 
|  138     threadMapMutex(); |  123     threadMapMutex(); | 
|  139     initializeRandomNumberGenerator(); |  124     initializeRandomNumberGenerator(); | 
|  140     ThreadIdentifierData::initializeOnce(); |  125     ThreadIdentifierData::initializeOnce(); | 
|  141     StackStats::initialize(); |  126     StackStats::initialize(); | 
|  142     wtfThreadData(); |  127     wtfThreadData(); | 
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  209     ThreadFunctionInvocation* leakedInvocation = invocation.leakPtr(); |  194     ThreadFunctionInvocation* leakedInvocation = invocation.leakPtr(); | 
|  210     UNUSED_PARAM(leakedInvocation); |  195     UNUSED_PARAM(leakedInvocation); | 
|  211  |  196  | 
|  212     return establishIdentifierForPthreadHandle(threadHandle); |  197     return establishIdentifierForPthreadHandle(threadHandle); | 
|  213 } |  198 } | 
|  214  |  199  | 
|  215 void initializeCurrentThreadInternal(const char* threadName) |  200 void initializeCurrentThreadInternal(const char* threadName) | 
|  216 { |  201 { | 
|  217 #if HAVE(PTHREAD_SETNAME_NP) |  202 #if HAVE(PTHREAD_SETNAME_NP) | 
|  218     pthread_setname_np(threadName); |  203     pthread_setname_np(threadName); | 
|  219 #elif OS(QNX) |  | 
|  220     pthread_setname_np(pthread_self(), threadName); |  | 
|  221 #else |  204 #else | 
|  222     UNUSED_PARAM(threadName); |  205     UNUSED_PARAM(threadName); | 
|  223 #endif |  206 #endif | 
|  224  |  207  | 
|  225 #if OS(MAC_OS_X) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 |  208 #if OS(MAC_OS_X) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 | 
|  226     // All threads that potentially use APIs above the BSD layer must be registe
     red with the Objective-C |  209     // All threads that potentially use APIs above the BSD layer must be registe
     red with the Objective-C | 
|  227     // garbage collector in case API implementations use garbage-collected memor
     y. |  210     // garbage collector in case API implementations use garbage-collected memor
     y. | 
|  228     objc_registerThreadWithCollector(); |  211     objc_registerThreadWithCollector(); | 
|  229 #endif |  212 #endif | 
|  230  |  213  | 
|  231 #if OS(QNX) && CPU(ARM_THUMB2) |  | 
|  232     enableIEEE754Denormal(); |  | 
|  233 #endif |  | 
|  234  |  | 
|  235     ThreadIdentifier id = identifierByPthreadHandle(pthread_self()); |  214     ThreadIdentifier id = identifierByPthreadHandle(pthread_self()); | 
|  236     ASSERT(id); |  215     ASSERT(id); | 
|  237     ThreadIdentifierData::initialize(id); |  216     ThreadIdentifierData::initialize(id); | 
|  238 } |  217 } | 
|  239  |  218  | 
|  240 int waitForThreadCompletion(ThreadIdentifier threadID) |  219 int waitForThreadCompletion(ThreadIdentifier threadID) | 
|  241 { |  220 { | 
|  242     pthread_t pthreadHandle; |  221     pthread_t pthreadHandle; | 
|  243     ASSERT(threadID); |  222     ASSERT(threadID); | 
|  244  |  223  | 
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  407  |  386  | 
|  408 void ThreadCondition::broadcast() |  387 void ThreadCondition::broadcast() | 
|  409 { |  388 { | 
|  410     int result = pthread_cond_broadcast(&m_condition); |  389     int result = pthread_cond_broadcast(&m_condition); | 
|  411     ASSERT_UNUSED(result, !result); |  390     ASSERT_UNUSED(result, !result); | 
|  412 } |  391 } | 
|  413  |  392  | 
|  414 } // namespace WTF |  393 } // namespace WTF | 
|  415  |  394  | 
|  416 #endif // USE(PTHREADS) |  395 #endif // USE(PTHREADS) | 
| OLD | NEW |