Commit e205cc68 authored by Francois Doray's avatar Francois Doray Committed by Commit Bot

TaskScheduler: Use Optional to set TaskRunnerHandle in TaskTracker.

This avoids a heap allocation per task run.

Change-Id: Id26fe463b29160887d29cb165426101142728550
Reviewed-on: https://chromium-review.googlesource.com/1249311
Commit-Queue: Gabriel Charette <gab@chromium.org>
Reviewed-by: default avatarGabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594804}
parent 2b93ee23
......@@ -14,6 +14,7 @@
#include "base/json/json_writer.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "base/optional.h"
#include "base/sequence_token.h"
#include "base/synchronization/condition_variable.h"
#include "base/task/scoped_set_task_priority_for_current_thread.h"
......@@ -595,16 +596,15 @@ void TaskTracker::RunOrSkipTask(Task task,
sequence->sequence_local_storage());
// Set up TaskRunnerHandle as expected for the scope of the task.
std::unique_ptr<SequencedTaskRunnerHandle> sequenced_task_runner_handle;
std::unique_ptr<ThreadTaskRunnerHandle> single_thread_task_runner_handle;
Optional<SequencedTaskRunnerHandle> sequenced_task_runner_handle;
Optional<ThreadTaskRunnerHandle> single_thread_task_runner_handle;
DCHECK(!task.sequenced_task_runner_ref ||
!task.single_thread_task_runner_ref);
if (task.sequenced_task_runner_ref) {
sequenced_task_runner_handle.reset(
new SequencedTaskRunnerHandle(task.sequenced_task_runner_ref));
sequenced_task_runner_handle.emplace(task.sequenced_task_runner_ref);
} else if (task.single_thread_task_runner_ref) {
single_thread_task_runner_handle.reset(
new ThreadTaskRunnerHandle(task.single_thread_task_runner_ref));
single_thread_task_runner_handle.emplace(
task.single_thread_task_runner_ref);
}
if (can_run_task) {
......
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