Commit baec9526 authored by rtenneti@chromium.org's avatar rtenneti@chromium.org

Use NOINLINE for thread watcher and browser thread identifier

functions.

R=eroman, jar, sky

Review URL: https://chromiumcodereview.appspot.com/10827026

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148487 0039d316-1c4b-4281-b951-d872f2087c98
parent d36a61cc
......@@ -32,53 +32,47 @@ namespace {
//
// We disable optimizations for this block of functions so the compiler doesn't
// merge them all together.
// TODO(eroman): What is the equivalent for other compilers?
#if defined(COMPILER_MSVC)
#pragma optimize("", off)
MSVC_DISABLE_OPTIMIZE()
MSVC_PUSH_DISABLE_WARNING(4748)
#endif
int* NullPointer() {
return reinterpret_cast<int*>(NULL);
}
void ThreadUnresponsive_UI() {
NOINLINE void ThreadUnresponsive_UI() {
*NullPointer() = __LINE__;
}
void ThreadUnresponsive_DB() {
NOINLINE void ThreadUnresponsive_DB() {
*NullPointer() = __LINE__;
}
void ThreadUnresponsive_WEBKIT() {
NOINLINE void ThreadUnresponsive_WEBKIT() {
*NullPointer() = __LINE__;
}
void ThreadUnresponsive_FILE() {
NOINLINE void ThreadUnresponsive_FILE() {
*NullPointer() = __LINE__;
}
void ThreadUnresponsive_FILE_USER_BLOCKING() {
NOINLINE void ThreadUnresponsive_FILE_USER_BLOCKING() {
*NullPointer() = __LINE__;
}
void ThreadUnresponsive_PROCESS_LAUNCHER() {
NOINLINE void ThreadUnresponsive_PROCESS_LAUNCHER() {
*NullPointer() = __LINE__;
}
void ThreadUnresponsive_CACHE() {
NOINLINE void ThreadUnresponsive_CACHE() {
*NullPointer() = __LINE__;
}
void ThreadUnresponsive_IO() {
NOINLINE void ThreadUnresponsive_IO() {
*NullPointer() = __LINE__;
}
#if defined(COMPILER_MSVC)
MSVC_POP_WARNING()
#pragma optimize("", on)
#endif
MSVC_ENABLE_OPTIMIZE();
void CrashBecauseThreadWasUnresponsive(BrowserThread::ID thread_id) {
base::debug::Alias(&thread_id);
......
......@@ -100,49 +100,51 @@ void BrowserThreadImpl::Init() {
MSVC_DISABLE_OPTIMIZE()
MSVC_PUSH_DISABLE_WARNING(4748)
void BrowserThreadImpl::UIThreadRun(MessageLoop* message_loop) {
NOINLINE 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) {
NOINLINE 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) {
NOINLINE 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) {
NOINLINE 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) {
NOINLINE 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) {
NOINLINE 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) {
NOINLINE 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) {
NOINLINE void BrowserThreadImpl::IOThreadRun(MessageLoop* message_loop) {
volatile int line_number = __LINE__;
Thread::Run(message_loop);
CHECK_GT(line_number, 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment