Bug 1462784 - Annotate idle stacks in the chromium event loop. r?froydnj
MozReview-Commit-ID: Ac8H02GKnmV
--- a/ipc/chromium/src/base/message_pump_default.cc
+++ b/ipc/chromium/src/base/message_pump_default.cc
@@ -16,16 +16,18 @@
namespace base {
MessagePumpDefault::MessagePumpDefault()
: keep_running_(true),
event_(false, false) {
}
void MessagePumpDefault::Run(Delegate* delegate) {
+ AUTO_PROFILER_LABEL("MessagePumpDefault::Run", OTHER);
+
DCHECK(keep_running_) << "Quit must have been called outside of Run!";
const MessageLoop* const loop = MessageLoop::current();
mozilla::BackgroundHangMonitor hangMonitor(
loop->thread_name().c_str(),
loop->transient_hang_timeout(),
loop->permanent_hang_timeout());
@@ -50,26 +52,26 @@ void MessagePumpDefault::Run(Delegate* d
if (!keep_running_)
break;
if (did_work)
continue;
if (delayed_work_time_.is_null()) {
hangMonitor.NotifyWait();
- AUTO_PROFILER_LABEL("MessagePumpDefault::Run:Wait", OTHER);
+ AUTO_PROFILER_LABEL("MessagePumpDefault::Run:Wait", IDLE);
{
AUTO_PROFILER_THREAD_SLEEP;
event_.Wait();
}
} else {
TimeDelta delay = delayed_work_time_ - TimeTicks::Now();
if (delay > TimeDelta()) {
hangMonitor.NotifyWait();
- AUTO_PROFILER_LABEL("MessagePumpDefault::Run:Wait", OTHER);
+ AUTO_PROFILER_LABEL("MessagePumpDefault::Run:Wait", IDLE);
{
AUTO_PROFILER_THREAD_SLEEP;
event_.TimedWait(delay);
}
} else {
// It looks like delayed_work_time_ indicates a time in the past, so we
// need to call DoDelayedWork now.
delayed_work_time_ = TimeTicks();