| Index: base/threading/sequenced_worker_pool.cc
|
| diff --git a/base/threading/sequenced_worker_pool.cc b/base/threading/sequenced_worker_pool.cc
|
| index badd2936ee2a70b964b5d047c85a5c8ce0861925..a5f997fd34dcdc4d1cbc35021d6f8025fc22bee6 100644
|
| --- a/base/threading/sequenced_worker_pool.cc
|
| +++ b/base/threading/sequenced_worker_pool.cc
|
| @@ -140,7 +140,7 @@ class SequencedWorkerPoolTaskRunner : public TaskRunner {
|
|
|
| // TaskRunner implementation
|
| bool PostDelayedTask(const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| TimeDelta delay) override;
|
| bool RunsTasksOnCurrentThread() const override;
|
|
|
| @@ -164,13 +164,13 @@ SequencedWorkerPoolTaskRunner::~SequencedWorkerPoolTaskRunner() {
|
|
|
| bool SequencedWorkerPoolTaskRunner::PostDelayedTask(
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| TimeDelta delay) {
|
| if (delay.is_zero()) {
|
| - return pool_->PostWorkerTaskWithShutdownBehavior(
|
| - from_here, task, shutdown_behavior_);
|
| + return pool_->PostWorkerTaskWithShutdownBehavior(from_here, std::move(task),
|
| + shutdown_behavior_);
|
| }
|
| - return pool_->PostDelayedWorkerTask(from_here, task, delay);
|
| + return pool_->PostDelayedWorkerTask(from_here, std::move(task), delay);
|
| }
|
|
|
| bool SequencedWorkerPoolTaskRunner::RunsTasksOnCurrentThread() const {
|
| @@ -194,13 +194,13 @@ class SequencedWorkerPool::PoolSequencedTaskRunner
|
|
|
| // TaskRunner implementation
|
| bool PostDelayedTask(const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| TimeDelta delay) override;
|
| bool RunsTasksOnCurrentThread() const override;
|
|
|
| // SequencedTaskRunner implementation
|
| bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| TimeDelta delay) override;
|
|
|
| private:
|
| @@ -227,15 +227,16 @@ SequencedWorkerPool::PoolSequencedTaskRunner::
|
| SequencedWorkerPool::PoolSequencedTaskRunner::
|
| ~PoolSequencedTaskRunner() = default;
|
|
|
| -bool SequencedWorkerPool::PoolSequencedTaskRunner::
|
| - PostDelayedTask(const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| - TimeDelta delay) {
|
| +bool SequencedWorkerPool::PoolSequencedTaskRunner::PostDelayedTask(
|
| + const tracked_objects::Location& from_here,
|
| + Closure task,
|
| + TimeDelta delay) {
|
| if (delay.is_zero()) {
|
| return pool_->PostSequencedWorkerTaskWithShutdownBehavior(
|
| - token_, from_here, task, shutdown_behavior_);
|
| + token_, from_here, std::move(task), shutdown_behavior_);
|
| }
|
| - return pool_->PostDelayedSequencedWorkerTask(token_, from_here, task, delay);
|
| + return pool_->PostDelayedSequencedWorkerTask(token_, from_here,
|
| + std::move(task), delay);
|
| }
|
|
|
| bool SequencedWorkerPool::PoolSequencedTaskRunner::
|
| @@ -243,13 +244,13 @@ bool SequencedWorkerPool::PoolSequencedTaskRunner::
|
| return pool_->IsRunningSequenceOnCurrentThread(token_);
|
| }
|
|
|
| -bool SequencedWorkerPool::PoolSequencedTaskRunner::
|
| - PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| - TimeDelta delay) {
|
| +bool SequencedWorkerPool::PoolSequencedTaskRunner::PostNonNestableDelayedTask(
|
| + const tracked_objects::Location& from_here,
|
| + Closure task,
|
| + TimeDelta delay) {
|
| // There's no way to run nested tasks, so simply forward to
|
| // PostDelayedTask.
|
| - return PostDelayedTask(from_here, task, delay);
|
| + return PostDelayedTask(from_here, std::move(task), delay);
|
| }
|
|
|
| // Worker ---------------------------------------------------------------------
|
| @@ -348,7 +349,7 @@ class SequencedWorkerPool::Inner {
|
| SequenceToken sequence_token,
|
| WorkerShutdown shutdown_behavior,
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| TimeDelta delay);
|
|
|
| bool RunsTasksOnCurrentThread() const;
|
| @@ -692,7 +693,7 @@ bool SequencedWorkerPool::Inner::PostTask(
|
| SequenceToken sequence_token,
|
| WorkerShutdown shutdown_behavior,
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| TimeDelta delay) {
|
| // TODO(fdoray): Uncomment this DCHECK. It is initially commented to avoid a
|
| // revert of the CL that adds debug::DumpWithoutCrashing() if it fails on the
|
| @@ -706,9 +707,9 @@ bool SequencedWorkerPool::Inner::PostTask(
|
| sequenced.sequence_token_id = sequence_token.id_;
|
| sequenced.shutdown_behavior = shutdown_behavior;
|
| sequenced.posted_from = from_here;
|
| - sequenced.task =
|
| - shutdown_behavior == BLOCK_SHUTDOWN ?
|
| - base::MakeCriticalClosure(task) : task;
|
| + sequenced.task = shutdown_behavior == BLOCK_SHUTDOWN
|
| + ? base::MakeCriticalClosure(std::move(task))
|
| + : std::move(task);
|
| sequenced.time_to_run = TimeTicks::Now() + delay;
|
|
|
| int create_thread_id = 0;
|
| @@ -1018,7 +1019,7 @@ void SequencedWorkerPool::Inner::ThreadLoop(Worker* this_worker) {
|
|
|
| tracked_objects::TaskStopwatch stopwatch;
|
| stopwatch.Start();
|
| - task.task.Run();
|
| + std::move(task.task).Run();
|
| stopwatch.Stop();
|
|
|
| tracked_objects::ThreadData::TallyRunOnNamedThreadIfTracking(
|
| @@ -1029,7 +1030,7 @@ void SequencedWorkerPool::Inner::ThreadLoop(Worker* this_worker) {
|
| // Also, do it before calling reset_running_task_info() so
|
| // that sequence-checking from within the task's destructor
|
| // still works.
|
| - task.task = Closure();
|
| + DCHECK(!task.task);
|
|
|
| this_worker->reset_running_task_info();
|
| }
|
| @@ -1532,71 +1533,71 @@ SequencedWorkerPool::GetTaskRunnerWithShutdownBehavior(
|
|
|
| bool SequencedWorkerPool::PostWorkerTask(
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task) {
|
| - return inner_->PostTask(NULL, SequenceToken(), BLOCK_SHUTDOWN,
|
| - from_here, task, TimeDelta());
|
| + Closure task) {
|
| + return inner_->PostTask(NULL, SequenceToken(), BLOCK_SHUTDOWN, from_here,
|
| + std::move(task), TimeDelta());
|
| }
|
|
|
| bool SequencedWorkerPool::PostDelayedWorkerTask(
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| TimeDelta delay) {
|
| WorkerShutdown shutdown_behavior =
|
| delay.is_zero() ? BLOCK_SHUTDOWN : SKIP_ON_SHUTDOWN;
|
| - return inner_->PostTask(NULL, SequenceToken(), shutdown_behavior,
|
| - from_here, task, delay);
|
| + return inner_->PostTask(NULL, SequenceToken(), shutdown_behavior, from_here,
|
| + std::move(task), delay);
|
| }
|
|
|
| bool SequencedWorkerPool::PostWorkerTaskWithShutdownBehavior(
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| WorkerShutdown shutdown_behavior) {
|
| - return inner_->PostTask(NULL, SequenceToken(), shutdown_behavior,
|
| - from_here, task, TimeDelta());
|
| + return inner_->PostTask(NULL, SequenceToken(), shutdown_behavior, from_here,
|
| + std::move(task), TimeDelta());
|
| }
|
|
|
| bool SequencedWorkerPool::PostSequencedWorkerTask(
|
| SequenceToken sequence_token,
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task) {
|
| - return inner_->PostTask(NULL, sequence_token, BLOCK_SHUTDOWN,
|
| - from_here, task, TimeDelta());
|
| + Closure task) {
|
| + return inner_->PostTask(NULL, sequence_token, BLOCK_SHUTDOWN, from_here,
|
| + std::move(task), TimeDelta());
|
| }
|
|
|
| bool SequencedWorkerPool::PostDelayedSequencedWorkerTask(
|
| SequenceToken sequence_token,
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| TimeDelta delay) {
|
| WorkerShutdown shutdown_behavior =
|
| delay.is_zero() ? BLOCK_SHUTDOWN : SKIP_ON_SHUTDOWN;
|
| - return inner_->PostTask(NULL, sequence_token, shutdown_behavior,
|
| - from_here, task, delay);
|
| + return inner_->PostTask(NULL, sequence_token, shutdown_behavior, from_here,
|
| + std::move(task), delay);
|
| }
|
|
|
| bool SequencedWorkerPool::PostNamedSequencedWorkerTask(
|
| const std::string& token_name,
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task) {
|
| + Closure task) {
|
| DCHECK(!token_name.empty());
|
| return inner_->PostTask(&token_name, SequenceToken(), BLOCK_SHUTDOWN,
|
| - from_here, task, TimeDelta());
|
| + from_here, std::move(task), TimeDelta());
|
| }
|
|
|
| bool SequencedWorkerPool::PostSequencedWorkerTaskWithShutdownBehavior(
|
| SequenceToken sequence_token,
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| WorkerShutdown shutdown_behavior) {
|
| - return inner_->PostTask(NULL, sequence_token, shutdown_behavior,
|
| - from_here, task, TimeDelta());
|
| + return inner_->PostTask(NULL, sequence_token, shutdown_behavior, from_here,
|
| + std::move(task), TimeDelta());
|
| }
|
|
|
| bool SequencedWorkerPool::PostDelayedTask(
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + Closure task,
|
| TimeDelta delay) {
|
| - return PostDelayedWorkerTask(from_here, task, delay);
|
| + return PostDelayedWorkerTask(from_here, std::move(task), delay);
|
| }
|
|
|
| bool SequencedWorkerPool::RunsTasksOnCurrentThread() const {
|
|
|