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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/child/scheduler_helper.cc

Issue 2546423002: [Try # 3] Scheduler refactoring to virtually eliminate redundant DoWorks (Closed)
Patch Set: Rebased Created 4 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "platform/scheduler/child/scheduler_helper.h" 5 #include "platform/scheduler/child/scheduler_helper.h"
6 6
7 #include "base/time/default_tick_clock.h" 7 #include "base/time/default_tick_clock.h"
8 #include "base/trace_event/trace_event.h" 8 #include "base/trace_event/trace_event.h"
9 #include "base/trace_event/trace_event_argument.h" 9 #include "base/trace_event/trace_event_argument.h"
10 #include "platform/scheduler/base/task_queue_impl.h" 10 #include "platform/scheduler/base/task_queue_impl.h"
11 #include "platform/scheduler/child/scheduler_tqm_delegate.h" 11 #include "platform/scheduler/child/scheduler_tqm_delegate.h"
12 12
13 namespace blink { 13 namespace blink {
14 namespace scheduler { 14 namespace scheduler {
15 15
16 SchedulerHelper::SchedulerHelper( 16 SchedulerHelper::SchedulerHelper(
17 scoped_refptr<SchedulerTqmDelegate> task_queue_manager_delegate, 17 scoped_refptr<SchedulerTqmDelegate> task_queue_manager_delegate,
18 const char* tracing_category, 18 const char* tracing_category,
19 const char* disabled_by_default_tracing_category, 19 const char* disabled_by_default_tracing_category,
20 const char* disabled_by_default_verbose_tracing_category) 20 const char* disabled_by_default_verbose_tracing_category)
21 : SchedulerHelper(task_queue_manager_delegate,
22 tracing_category,
23 disabled_by_default_tracing_category,
24 disabled_by_default_verbose_tracing_category,
25 TaskQueue::Spec(TaskQueue::QueueType::DEFAULT)
26 .SetShouldMonitorQuiescence(true)) {}
27
28 SchedulerHelper::SchedulerHelper(
29 scoped_refptr<SchedulerTqmDelegate> task_queue_manager_delegate,
30 const char* tracing_category,
31 const char* disabled_by_default_tracing_category,
32 const char* disabled_by_default_verbose_tracing_category,
33 TaskQueue::Spec default_task_queue_spec)
21 : task_queue_manager_delegate_(task_queue_manager_delegate), 34 : task_queue_manager_delegate_(task_queue_manager_delegate),
22 task_queue_manager_( 35 task_queue_manager_(
23 new TaskQueueManager(task_queue_manager_delegate, 36 new TaskQueueManager(task_queue_manager_delegate,
24 tracing_category, 37 tracing_category,
25 disabled_by_default_tracing_category, 38 disabled_by_default_tracing_category,
26 disabled_by_default_verbose_tracing_category)), 39 disabled_by_default_verbose_tracing_category)),
27 control_task_runner_( 40 control_task_runner_(
28 NewTaskQueue(TaskQueue::Spec(TaskQueue::QueueType::CONTROL) 41 NewTaskQueue(TaskQueue::Spec(TaskQueue::QueueType::CONTROL)
29 .SetShouldNotifyObservers(false))), 42 .SetShouldNotifyObservers(false))),
30 default_task_runner_( 43 default_task_runner_(NewTaskQueue(default_task_queue_spec)),
31 NewTaskQueue(TaskQueue::Spec(TaskQueue::QueueType::DEFAULT)
32 .SetShouldMonitorQuiescence(true))),
33 observer_(nullptr), 44 observer_(nullptr),
34 tracing_category_(tracing_category), 45 tracing_category_(tracing_category),
35 disabled_by_default_tracing_category_( 46 disabled_by_default_tracing_category_(
36 disabled_by_default_tracing_category) { 47 disabled_by_default_tracing_category) {
37 control_task_runner_->SetQueuePriority(TaskQueue::CONTROL_PRIORITY); 48 control_task_runner_->SetQueuePriority(TaskQueue::CONTROL_PRIORITY);
38 49
39 task_queue_manager_->SetWorkBatchSize(4); 50 task_queue_manager_->SetWorkBatchSize(4);
40 51
41 DCHECK(task_queue_manager_delegate_); 52 DCHECK(task_queue_manager_delegate_);
42 task_queue_manager_delegate_->SetDefaultTaskRunner( 53 task_queue_manager_delegate_->SetDefaultTaskRunner(
43 default_task_runner_.get()); 54 default_task_runner_.get());
44 } 55 }
45 56
46 SchedulerHelper::~SchedulerHelper() { 57 SchedulerHelper::~SchedulerHelper() {
47 Shutdown(); 58 Shutdown();
48 } 59 }
49 60
50 void SchedulerHelper::Shutdown() { 61 void SchedulerHelper::Shutdown() {
51 CheckOnValidThread(); 62 CheckOnValidThread();
52 if (task_queue_manager_) 63 if (task_queue_manager_)
53 task_queue_manager_->SetObserver(nullptr); 64 task_queue_manager_->SetObserver(nullptr);
54 task_queue_manager_.reset(); 65 task_queue_manager_.reset();
55 task_queue_manager_delegate_->RestoreDefaultTaskRunner(); 66 task_queue_manager_delegate_->RestoreDefaultTaskRunner();
56 } 67 }
57 68
69 void SchedulerHelper::SetRecordTaskDelayHistograms(
70 bool record_task_delay_histograms) {
71 if (!task_queue_manager_)
72 return;
73
74 task_queue_manager_->SetRecordTaskDelayHistograms(
75 record_task_delay_histograms);
76 }
77
58 scoped_refptr<TaskQueue> SchedulerHelper::NewTaskQueue( 78 scoped_refptr<TaskQueue> SchedulerHelper::NewTaskQueue(
59 const TaskQueue::Spec& spec) { 79 const TaskQueue::Spec& spec) {
60 DCHECK(task_queue_manager_.get()); 80 DCHECK(task_queue_manager_.get());
61 return task_queue_manager_->NewTaskQueue(spec); 81 return task_queue_manager_->NewTaskQueue(spec);
62 } 82 }
63 83
64 scoped_refptr<TaskQueue> SchedulerHelper::DefaultTaskRunner() { 84 scoped_refptr<TaskQueue> SchedulerHelper::DefaultTaskRunner() {
65 CheckOnValidThread(); 85 CheckOnValidThread();
66 return default_task_runner_; 86 return default_task_runner_;
67 } 87 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 } 181 }
162 182
163 TaskQueue* SchedulerHelper::CurrentlyExecutingTaskQueue() const { 183 TaskQueue* SchedulerHelper::CurrentlyExecutingTaskQueue() const {
164 if (!task_queue_manager_) 184 if (!task_queue_manager_)
165 return nullptr; 185 return nullptr;
166 return task_queue_manager_->currently_executing_task_queue(); 186 return task_queue_manager_->currently_executing_task_queue();
167 } 187 }
168 188
169 } // namespace scheduler 189 } // namespace scheduler
170 } // namespace blink 190 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698