Changeset 41594 in webkit for trunk/JavaScriptCore/wtf/ThreadSpecific.h
- Timestamp:
- Mar 11, 2009, 1:39:21 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/wtf/ThreadSpecific.h
r39708 r41594 130 130 const int kMaxTlsKeySize = 256; 131 131 132 extern long g_tls_key_count;133 extern DWORD g_tls_keys[kMaxTlsKeySize];132 long& tlsKeyCount(); 133 DWORD* tlsKeys(); 134 134 135 135 template<typename T> … … 141 141 CRASH(); 142 142 143 m_index = InterlockedIncrement(& g_tls_key_count) - 1;143 m_index = InterlockedIncrement(&tlsKeyCount()) - 1; 144 144 if (m_index >= kMaxTlsKeySize) 145 145 CRASH(); 146 g_tls_keys[m_index] = tls_key;146 tlsKeys()[m_index] = tls_key; 147 147 } 148 148 … … 151 151 { 152 152 // Does not invoke destructor functions. They will be called from ThreadSpecificThreadExit when the thread is detached. 153 TlsFree( g_tls_keys[m_index]);153 TlsFree(tlsKeys()[m_index]); 154 154 } 155 155 … … 157 157 inline T* ThreadSpecific<T>::get() 158 158 { 159 Data* data = static_cast<Data*>(TlsGetValue( g_tls_keys[m_index]));159 Data* data = static_cast<Data*>(TlsGetValue(tlsKeys()[m_index])); 160 160 return data ? data->value : 0; 161 161 } … … 167 167 Data* data = new Data(ptr, this); 168 168 data->destructor = &ThreadSpecific<T>::destroy; 169 TlsSetValue( g_tls_keys[m_index], data);169 TlsSetValue(tlsKeys()[m_index], data); 170 170 } 171 171 … … 191 191 pthread_setspecific(data->owner->m_key, 0); 192 192 #elif PLATFORM(WIN_OS) 193 TlsSetValue( g_tls_keys[data->owner->m_index], 0);193 TlsSetValue(tlsKeys()[data->owner->m_index], 0); 194 194 #else 195 195 #error ThreadSpecific is not implemented for this platform.
Note:
See TracChangeset
for help on using the changeset viewer.