Index: content/browser/browser_thread_impl.cc |
=================================================================== |
--- content/browser/browser_thread_impl.cc (revision 147800) |
+++ content/browser/browser_thread_impl.cc (working copy) |
@@ -95,6 +95,91 @@ |
delegate->Init(); |
} |
+// We disable optimizations for this block of functions so the compiler doesn't |
+// merge them all together. |
+MSVC_DISABLE_OPTIMIZE() |
+MSVC_PUSH_DISABLE_WARNING(4748) |
+ |
+void BrowserThreadImpl::UIThreadRun(MessageLoop* message_loop) { |
+ volatile int line_number = __LINE__; |
+ Thread::Run(message_loop); |
+ CHECK_GT(line_number, 0); |
+} |
+ |
+void BrowserThreadImpl::DBThreadRun(MessageLoop* message_loop) { |
+ volatile int line_number = __LINE__; |
+ Thread::Run(message_loop); |
+ CHECK_GT(line_number, 0); |
+} |
+ |
+void BrowserThreadImpl::WebKitThreadRun(MessageLoop* message_loop) { |
+ volatile int line_number = __LINE__; |
+ Thread::Run(message_loop); |
+ CHECK_GT(line_number, 0); |
+} |
+ |
+void BrowserThreadImpl::FileThreadRun(MessageLoop* message_loop) { |
+ volatile int line_number = __LINE__; |
+ Thread::Run(message_loop); |
+ CHECK_GT(line_number, 0); |
+} |
+ |
+void BrowserThreadImpl::FileUserBlockingThreadRun(MessageLoop* message_loop) { |
+ volatile int line_number = __LINE__; |
+ Thread::Run(message_loop); |
+ CHECK_GT(line_number, 0); |
+} |
+ |
+void BrowserThreadImpl::ProcessLauncherThreadRun(MessageLoop* message_loop) { |
+ volatile int line_number = __LINE__; |
+ Thread::Run(message_loop); |
+ CHECK_GT(line_number, 0); |
+} |
+ |
+void BrowserThreadImpl::CacheThreadRun(MessageLoop* message_loop) { |
+ volatile int line_number = __LINE__; |
+ Thread::Run(message_loop); |
+ CHECK_GT(line_number, 0); |
+} |
+ |
+void BrowserThreadImpl::IOThreadRun(MessageLoop* message_loop) { |
+ volatile int line_number = __LINE__; |
+ Thread::Run(message_loop); |
+ CHECK_GT(line_number, 0); |
+} |
+ |
+MSVC_POP_WARNING() |
+MSVC_ENABLE_OPTIMIZE(); |
+ |
+void BrowserThreadImpl::Run(MessageLoop* message_loop) { |
+ BrowserThread::ID thread_id; |
+ if (!GetCurrentThreadIdentifier(&thread_id)) |
+ return Thread::Run(message_loop); |
+ |
+ switch (thread_id) { |
+ case BrowserThread::UI: |
+ return UIThreadRun(message_loop); |
+ case BrowserThread::DB: |
+ return DBThreadRun(message_loop); |
+ case BrowserThread::WEBKIT_DEPRECATED: |
+ return WebKitThreadRun(message_loop); |
+ case BrowserThread::FILE: |
+ return FileThreadRun(message_loop); |
+ case BrowserThread::FILE_USER_BLOCKING: |
+ return FileUserBlockingThreadRun(message_loop); |
+ case BrowserThread::PROCESS_LAUNCHER: |
+ return ProcessLauncherThreadRun(message_loop); |
+ case BrowserThread::CACHE: |
+ return CacheThreadRun(message_loop); |
+ case BrowserThread::IO: |
+ return IOThreadRun(message_loop); |
+ case BrowserThread::ID_COUNT: |
+ CHECK(false); // This shouldn't actually be reached! |
+ break; |
+ } |
+ Thread::Run(message_loop); |
+} |
+ |
void BrowserThreadImpl::CleanUp() { |
BrowserThreadGlobals& globals = g_globals.Get(); |