Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Unified Diff: base/message_loop/message_loop.cc

Issue 455833004: base: Factor task debug annotations out of MessageLoop (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Documentation. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« base/message_loop/message_loop.h ('K') | « base/message_loop/message_loop.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/message_loop/message_loop.cc
diff --git a/base/message_loop/message_loop.cc b/base/message_loop/message_loop.cc
index c0d9b0e50ed5ab3be12355994246dd943ec2929a..69a02a30bca58dc92d5b54e61890ae4cb2205489 100644
--- a/base/message_loop/message_loop.cc
+++ b/base/message_loop/message_loop.cc
@@ -8,8 +8,6 @@
#include "base/bind.h"
#include "base/compiler_specific.h"
-#include "base/debug/alias.h"
-#include "base/debug/trace_event.h"
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
@@ -423,45 +421,20 @@ bool MessageLoop::ProcessNextDelayedNonNestableTask() {
}
void MessageLoop::RunTask(const PendingTask& pending_task) {
- tracked_objects::TrackedTime start_time =
- tracked_objects::ThreadData::NowForStartOfRun(pending_task.birth_tally);
-
- TRACE_EVENT_FLOW_END1(TRACE_DISABLED_BY_DEFAULT("toplevel.flow"),
- "MessageLoop::PostTask", TRACE_ID_MANGLE(GetTaskTraceID(pending_task)),
- "queue_duration",
- (start_time - pending_task.EffectiveTimePosted()).InMilliseconds());
- // When tracing memory for posted tasks it's more valuable to attribute the
- // memory allocations to the source function than generically to "RunTask".
- TRACE_EVENT_WITH_MEMORY_TAG2(
- "toplevel", "MessageLoop::RunTask",
- pending_task.posted_from.function_name(), // Name for memory tracking.
- "src_file", pending_task.posted_from.file_name(),
- "src_func", pending_task.posted_from.function_name());
-
DCHECK(nestable_tasks_allowed_);
+
// Execute the task and assume the worst: It is probably not reentrant.
nestable_tasks_allowed_ = false;
- // Before running the task, store the program counter where it was posted
- // and deliberately alias it to ensure it is on the stack if the task
- // crashes. Be careful not to assume that the variable itself will have the
- // expected value when displayed by the optimizer in an optimized build.
- // Look at a memory dump of the stack.
- const void* program_counter =
- pending_task.posted_from.program_counter();
- debug::Alias(&program_counter);
-
HistogramEvent(kTaskRunEvent);
FOR_EACH_OBSERVER(TaskObserver, task_observers_,
WillProcessTask(pending_task));
- pending_task.task.Run();
+ task_annotator_.RunTask(
+ "MessageLoop::PostTask", "MessageLoop::RunTask", pending_task);
FOR_EACH_OBSERVER(TaskObserver, task_observers_,
DidProcessTask(pending_task));
- tracked_objects::ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
- start_time, tracked_objects::ThreadData::NowForEndOfRun());
-
nestable_tasks_allowed_ = true;
}
@@ -513,11 +486,6 @@ bool MessageLoop::DeletePendingTasks() {
return did_work;
}
-uint64 MessageLoop::GetTaskTraceID(const PendingTask& task) {
- return (static_cast<uint64>(task.sequence_num) << 32) |
- ((static_cast<uint64>(reinterpret_cast<intptr_t>(this)) << 32) >> 32);
-}
-
void MessageLoop::ReloadWorkQueue() {
// We can improve performance of our loading tasks from the incoming queue to
// |*work_queue| by waiting until the last minute (|*work_queue| is empty) to
« base/message_loop/message_loop.h ('K') | « base/message_loop/message_loop.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698