Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 469 // Before running the task, store the program counter where it was posted | 469 // Before running the task, store the program counter where it was posted |
| 470 // and deliberately alias it to ensure it is on the stack if the task | 470 // and deliberately alias it to ensure it is on the stack if the task |
| 471 // crashes. Be careful not to assume that the variable itself will have the | 471 // crashes. Be careful not to assume that the variable itself will have the |
| 472 // expected value when displayed by the optimizer in an optimized build. | 472 // expected value when displayed by the optimizer in an optimized build. |
| 473 // Look at a memory dump of the stack. | 473 // Look at a memory dump of the stack. |
| 474 const void* program_counter = | 474 const void* program_counter = |
| 475 pending_task.posted_from.program_counter(); | 475 pending_task.posted_from.program_counter(); |
| 476 base::debug::Alias(&program_counter); | 476 base::debug::Alias(&program_counter); |
| 477 | 477 |
| 478 HistogramEvent(kTaskRunEvent); | 478 HistogramEvent(kTaskRunEvent); |
| 479 | |
| 480 TimeTicks start_of_run = tracked_objects::ThreadData::Now(); | |
| 479 FOR_EACH_OBSERVER(TaskObserver, task_observers_, | 481 FOR_EACH_OBSERVER(TaskObserver, task_observers_, |
| 480 WillProcessTask(pending_task.time_posted)); | 482 WillProcessTask(pending_task.time_posted)); |
| 481 pending_task.task.Run(); | 483 pending_task.task.Run(); |
| 482 FOR_EACH_OBSERVER(TaskObserver, task_observers_, | 484 FOR_EACH_OBSERVER(TaskObserver, task_observers_, |
| 483 DidProcessTask(pending_task.time_posted)); | 485 DidProcessTask(pending_task.time_posted)); |
| 484 | 486 tracked_objects::ThreadData::TallyADeathIfActive(pending_task.post_births, |
| 485 #if defined(TRACK_ALL_TASK_OBJECTS) | 487 pending_task.time_posted, |
| 486 tracked_objects::ThreadData::TallyADeathIfActive( | 488 start_of_run, |
|
jar (doing other things)
2011/10/14 02:29:53
I changed this code so that I don't need to ifdef
| |
| 487 pending_task.post_births, | 489 this); |
| 488 TimeTicks::Now() - pending_task.time_posted); | |
| 489 #endif // defined(TRACK_ALL_TASK_OBJECTS) | |
| 490 | 490 |
| 491 nestable_tasks_allowed_ = true; | 491 nestable_tasks_allowed_ = true; |
| 492 } | 492 } |
| 493 | 493 |
| 494 bool MessageLoop::DeferOrRunPendingTask( | 494 bool MessageLoop::DeferOrRunPendingTask(const PendingTask& pending_task) { |
| 495 const PendingTask& pending_task) { | |
| 496 if (pending_task.nestable || state_->run_depth == 1) { | 495 if (pending_task.nestable || state_->run_depth == 1) { |
| 497 RunTask(pending_task); | 496 RunTask(pending_task); |
| 498 // Show that we ran a task (Note: a new one might arrive as a | 497 // Show that we ran a task (Note: a new one might arrive as a |
| 499 // consequence!). | 498 // consequence!). |
| 500 return true; | 499 return true; |
| 501 } | 500 } |
| 502 | 501 |
| 503 // We couldn't run the task now because we're in a nested message loop | 502 // We couldn't run the task now because we're in a nested message loop |
| 504 // and the task isn't nestable. | 503 // and the task isn't nestable. |
| 505 deferred_non_nestable_work_queue_.push(pending_task); | 504 deferred_non_nestable_work_queue_.push(pending_task); |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 859 Watcher *delegate) { | 858 Watcher *delegate) { |
| 860 return pump_libevent()->WatchFileDescriptor( | 859 return pump_libevent()->WatchFileDescriptor( |
| 861 fd, | 860 fd, |
| 862 persistent, | 861 persistent, |
| 863 static_cast<base::MessagePumpLibevent::Mode>(mode), | 862 static_cast<base::MessagePumpLibevent::Mode>(mode), |
| 864 controller, | 863 controller, |
| 865 delegate); | 864 delegate); |
| 866 } | 865 } |
| 867 | 866 |
| 868 #endif | 867 #endif |
| OLD | NEW |