Changeset 128704 in webkit for trunk/Source/JavaScriptCore
- Timestamp:
- Sep 15, 2012, 11:08:18 PM (13 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r128699 r128704 1 2012-09-15 Mark Lam <[email protected]> 2 3 Fixed JSLock to use the platform abstraction for Mutex instead of 4 depending on pthreads. 5 https://bugs.webkit.org/show_bug.cgi?id=96858. 6 7 Reviewed by Filip Pizlo. 8 9 This fixes a synchronization problem on the Windows port and makes 10 it more reliable when running the layout tests. 11 12 * runtime/InitializeThreading.cpp: 13 (JSC::initializeThreadingOnce): 14 * runtime/JSLock.cpp: 15 (JSC): 16 (JSC::GlobalJSLock::GlobalJSLock): 17 (JSC::GlobalJSLock::~GlobalJSLock): 18 (JSC::GlobalJSLock::initialize): 19 * runtime/JSLock.h: 20 (GlobalJSLock): 21 (JSLock): 22 1 23 2012-09-15 Filip Pizlo <[email protected]> 2 24 -
trunk/Source/JavaScriptCore/runtime/InitializeThreading.cpp
r127191 r128704 36 36 #include "JSDateMath.h" 37 37 #include "JSGlobalObject.h" 38 #include "JSLock.h" 38 39 #include "LLIntData.h" 39 40 #include "WriteBarrier.h" … … 54 55 WTF::double_conversion::initialize(); 55 56 WTF::initializeThreading(); 57 GlobalJSLock::initialize(); 56 58 Options::initialize(); 57 59 #if ENABLE(WRITE_BARRIER_PROFILING) -
trunk/Source/JavaScriptCore/runtime/JSLock.cpp
r127202 r128704 34 34 namespace JSC { 35 35 36 // JSLock is only needed to support an obsolete execution model where JavaScriptCore 37 // automatically protected against concurrent access from multiple threads. 38 // So it's safe to disable it on non-mac platforms where we don't have native pthreads. 39 #if (OS(DARWIN) || USE(PTHREADS)) 40 41 static pthread_mutex_t sharedInstanceLock = PTHREAD_MUTEX_INITIALIZER; 36 Mutex* GlobalJSLock::s_sharedInstanceLock = 0; 42 37 43 38 GlobalJSLock::GlobalJSLock() 44 39 { 45 pthread_mutex_lock(&sharedInstanceLock);40 s_sharedInstanceLock->lock(); 46 41 } 47 42 48 43 GlobalJSLock::~GlobalJSLock() 49 44 { 50 pthread_mutex_unlock(&sharedInstanceLock); 45 s_sharedInstanceLock->unlock(); 46 } 47 48 void GlobalJSLock::initialize() 49 { 50 s_sharedInstanceLock = new Mutex(); 51 51 } 52 52 … … 217 217 } 218 218 219 #else // (OS(DARWIN) || USE(PTHREADS))220 221 GlobalJSLock::GlobalJSLock()222 {223 }224 225 GlobalJSLock::~GlobalJSLock()226 {227 }228 229 JSLockHolder::JSLockHolder(JSGlobalData*)230 {231 }232 233 JSLockHolder::JSLockHolder(JSGlobalData&)234 {235 }236 237 JSLockHolder::JSLockHolder(ExecState*)238 {239 }240 241 JSLockHolder::~JSLockHolder()242 {243 }244 245 JSLock::JSLock()246 {247 }248 249 JSLock::~JSLock()250 {251 }252 253 bool JSLock::currentThreadIsHoldingLock()254 {255 return true;256 }257 258 void JSLock::lock()259 {260 }261 262 void JSLock::unlock()263 {264 }265 266 void JSLock::lock(ExecState*)267 {268 }269 270 void JSLock::unlock(ExecState*)271 {272 }273 274 void JSLock::lock(JSGlobalData&)275 {276 }277 278 void JSLock::unlock(JSGlobalData&)279 {280 }281 282 unsigned JSLock::dropAllLocks()283 {284 return 0;285 }286 287 unsigned JSLock::dropAllLocksUnconditionally()288 {289 return 0;290 }291 292 void JSLock::grabAllLocks(unsigned)293 {294 }295 296 JSLock::DropAllLocks::DropAllLocks(ExecState*)297 {298 }299 300 JSLock::DropAllLocks::DropAllLocks(JSGlobalData*)301 {302 }303 304 JSLock::DropAllLocks::~DropAllLocks()305 {306 }307 308 #endif // (OS(DARWIN) || USE(PTHREADS))309 310 219 } // namespace JSC -
trunk/Source/JavaScriptCore/runtime/JSLock.h
r121381 r128704 59 59 JS_EXPORT_PRIVATE GlobalJSLock(); 60 60 JS_EXPORT_PRIVATE ~GlobalJSLock(); 61 62 static void initialize(); 63 private: 64 static Mutex* s_sharedInstanceLock; 61 65 }; 62 66 … … 92 96 void grabAllLocks(unsigned lockCount); 93 97 94 SpinLock m_spinLock;95 Mutex m_lock;96 ThreadIdentifier m_ownerThread;97 intptr_t m_lockCount;98 unsigned m_lockDropDepth;99 100 98 class DropAllLocks { 101 99 WTF_MAKE_NONCOPYABLE(DropAllLocks); … … 109 107 RefPtr<JSGlobalData> m_globalData; 110 108 }; 109 110 private: 111 SpinLock m_spinLock; 112 Mutex m_lock; 113 ThreadIdentifier m_ownerThread; 114 intptr_t m_lockCount; 115 unsigned m_lockDropDepth; 111 116 }; 112 117
Note:
See TracChangeset
for help on using the changeset viewer.