Changeset 424 for trunk/JavaScriptCore/wtf/ThreadingWin.cpp
- Timestamp:
- 07/30/08 15:12:45 (5 months ago)
- Files:
-
- trunk/JavaScriptCore/wtf/ThreadingWin.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/JavaScriptCore/wtf/ThreadingWin.cpp
r243 r424 78 78 namespace WTF { 79 79 80 // MS_VC_EXCEPTION, THREADNAME_INFO, and setThreadName all come from <http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx>. 81 static const DWORD MS_VC_EXCEPTION = 0x406D1388; 82 83 #pragma pack(push, 8) 84 typedef struct tagTHREADNAME_INFO { 85 DWORD dwType; // must be 0x1000 86 LPCSTR szName; // pointer to name (in user addr space) 87 DWORD dwThreadID; // thread ID (-1=caller thread) 88 DWORD dwFlags; // reserved for future use, must be zero 89 } THREADNAME_INFO; 90 #pragma pack(pop) 91 92 static void setThreadName(DWORD dwThreadID, LPCSTR szThreadName) 93 { 94 // Visual Studio has a 31-character limit on thread names. Longer names will 95 // be truncated silently, but we'd like callers to know about the limit. 96 ASSERT_ARG(szThreadName, strlen(szThreadName) <= 31); 97 98 THREADNAME_INFO info; 99 info.dwType = 0x1000; 100 info.szName = szThreadName; 101 info.dwThreadID = dwThreadID; 102 info.dwFlags = 0; 103 104 __try { 105 RaiseException(MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), reinterpret_cast<ULONG_PTR*>(&info)); 106 } __except (EXCEPTION_CONTINUE_EXECUTION) { 107 } 108 } 109 80 110 Mutex* atomicallyInitializedStaticMutex; 81 111 … … 96 126 initializeMainThread(); 97 127 mainThreadIdentifier = currentThread(); 128 setThreadName(mainThreadIdentifier, "Main Thread"); 98 129 } 99 130 } … … 146 177 } 147 178 148 ThreadIdentifier createThread(ThreadFunction entryPoint, void* data )179 ThreadIdentifier createThread(ThreadFunction entryPoint, void* data, const char* threadName) 149 180 { 150 181 unsigned threadIdentifier = 0; … … 157 188 } 158 189 190 if (threadName) 191 setThreadName(threadIdentifier, threadName); 192 159 193 threadID = static_cast<ThreadIdentifier>(threadIdentifier); 160 194 storeThreadHandleByIdentifier(threadIdentifier, threadHandle); 161 195 162 196 return threadID; 197 } 198 199 // This function is deprecated but needs to be kept around for backward 200 // compatibility. Use the 3-argument version of createThread above. 201 ThreadIdentifier createThread(ThreadFunction entryPoint, void* data) 202 { 203 return createThread(entryPoint, data, 0); 163 204 } 164 205
