Changeset 46431 in webkit for trunk/JavaScriptCore/runtime/JSLock.cpp
- Timestamp:
- Jul 27, 2009, 3:07:26 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/JSLock.cpp
r44224 r46431 61 61 62 62 JSLock::JSLock(ExecState* exec) 63 : m_lock ingForReal(exec->globalData().isSharedInstance)64 { 65 lock(m_lock ingForReal);66 } 67 68 void JSLock::lock( bool lockForReal)63 : m_lockBehavior(exec->globalData().isSharedInstance ? LockForReal : SilenceAssertionsOnly) 64 { 65 lock(m_lockBehavior); 66 } 67 68 void JSLock::lock(JSLockBehavior lockBehavior) 69 69 { 70 70 #ifdef NDEBUG 71 71 // Locking "not for real" is a debug-only feature. 72 if ( !lockForReal)72 if (lockBehavior == SilenceAssertionsOnly) 73 73 return; 74 74 #endif … … 77 77 78 78 intptr_t currentLockCount = lockCount(); 79 if (!currentLockCount && lock ForReal) {79 if (!currentLockCount && lockBehavior == LockForReal) { 80 80 int result; 81 81 result = pthread_mutex_lock(&JSMutex); … … 85 85 } 86 86 87 void JSLock::unlock( bool lockForReal)87 void JSLock::unlock(JSLockBehavior lockBehavior) 88 88 { 89 89 ASSERT(lockCount()); … … 91 91 #ifdef NDEBUG 92 92 // Locking "not for real" is a debug-only feature. 93 if ( !lockForReal)93 if (lockBehavior == SilenceAssertionsOnly) 94 94 return; 95 95 #endif … … 97 97 intptr_t newLockCount = lockCount() - 1; 98 98 setLockCount(newLockCount); 99 if (!newLockCount && lock ForReal) {99 if (!newLockCount && lockBehavior == LockForReal) { 100 100 int result; 101 101 result = pthread_mutex_unlock(&JSMutex); … … 106 106 void JSLock::lock(ExecState* exec) 107 107 { 108 lock(exec->globalData().isSharedInstance );108 lock(exec->globalData().isSharedInstance ? LockForReal : SilenceAssertionsOnly); 109 109 } 110 110 111 111 void JSLock::unlock(ExecState* exec) 112 112 { 113 unlock(exec->globalData().isSharedInstance );113 unlock(exec->globalData().isSharedInstance ? LockForReal : SilenceAssertionsOnly); 114 114 } 115 115 … … 163 163 164 164 JSLock::DropAllLocks::DropAllLocks(ExecState* exec) 165 : m_lock ingForReal(exec->globalData().isSharedInstance)165 : m_lockBehavior(exec->globalData().isSharedInstance ? LockForReal : SilenceAssertionsOnly) 166 166 { 167 167 pthread_once(&createJSLockCountOnce, createJSLockCount); … … 174 174 m_lockCount = JSLock::lockCount(); 175 175 for (intptr_t i = 0; i < m_lockCount; i++) 176 JSLock::unlock(m_lock ingForReal);177 } 178 179 JSLock::DropAllLocks::DropAllLocks( bool lockingForReal)180 : m_lock ingForReal(lockingForReal)176 JSLock::unlock(m_lockBehavior); 177 } 178 179 JSLock::DropAllLocks::DropAllLocks(JSLockBehavior JSLockBehavior) 180 : m_lockBehavior(JSLockBehavior) 181 181 { 182 182 pthread_once(&createJSLockCountOnce, createJSLockCount); … … 192 192 m_lockCount = JSLock::lockCount(); 193 193 for (intptr_t i = 0; i < m_lockCount; i++) 194 JSLock::unlock(m_lock ingForReal);194 JSLock::unlock(m_lockBehavior); 195 195 } 196 196 … … 198 198 { 199 199 for (intptr_t i = 0; i < m_lockCount; i++) 200 JSLock::lock(m_lock ingForReal);200 JSLock::lock(m_lockBehavior); 201 201 202 202 --lockDropDepth; … … 206 206 207 207 JSLock::JSLock(ExecState*) 208 : m_lock ingForReal(false)208 : m_lockBehavior(false) 209 209 { 210 210 } … … 222 222 } 223 223 224 void JSLock::lock( bool)225 { 226 } 227 228 void JSLock::unlock( bool)224 void JSLock::lock(JSLockBehavior) 225 { 226 } 227 228 void JSLock::unlock(JSLockBehavior) 229 229 { 230 230 } … … 242 242 } 243 243 244 JSLock::DropAllLocks::DropAllLocks( bool)244 JSLock::DropAllLocks::DropAllLocks(JSLockBehavior) 245 245 { 246 246 }
Note:
See TracChangeset
for help on using the changeset viewer.