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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc

Issue 2786083005: scheduler: Maintain a constant enqueue order for every task (Closed)
Patch Set: WASM workaround no longer needed Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/base/task_queue_selector.h" 5 #include "platform/scheduler/base/task_queue_selector.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/trace_event/trace_event_argument.h" 8 #include "base/trace_event/trace_event_argument.h"
9 #include "platform/scheduler/base/task_queue_impl.h" 9 #include "platform/scheduler/base/task_queue_impl.h"
10 #include "platform/scheduler/base/work_queue.h" 10 #include "platform/scheduler/base/work_queue.h"
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 WorkQueue** out_work_queue) const { 163 WorkQueue** out_work_queue) const {
164 WorkQueue* immediate_queue; 164 WorkQueue* immediate_queue;
165 DCHECK_EQ(*out_chose_delayed_over_immediate, false); 165 DCHECK_EQ(*out_chose_delayed_over_immediate, false);
166 EnqueueOrder immediate_enqueue_order; 166 EnqueueOrder immediate_enqueue_order;
167 if (immediate_work_queue_sets_.GetOldestQueueAndEnqueueOrderInSet( 167 if (immediate_work_queue_sets_.GetOldestQueueAndEnqueueOrderInSet(
168 priority, &immediate_queue, &immediate_enqueue_order)) { 168 priority, &immediate_queue, &immediate_enqueue_order)) {
169 WorkQueue* delayed_queue; 169 WorkQueue* delayed_queue;
170 EnqueueOrder delayed_enqueue_order; 170 EnqueueOrder delayed_enqueue_order;
171 if (delayed_work_queue_sets_.GetOldestQueueAndEnqueueOrderInSet( 171 if (delayed_work_queue_sets_.GetOldestQueueAndEnqueueOrderInSet(
172 priority, &delayed_queue, &delayed_enqueue_order)) { 172 priority, &delayed_queue, &delayed_enqueue_order)) {
173 if (immediate_enqueue_order < delayed_enqueue_order) { 173 // When comparing enqueue orders of immediate and delayed tasks, only look
174 // at the sequence number because the delay has already been applied. Note
175 // that the delayed run time is still taken into account by TaskQueueSets
176 // when comparing tasks across different queues.
177 if (immediate_enqueue_order.sequence_num <
178 delayed_enqueue_order.sequence_num) {
174 *out_work_queue = immediate_queue; 179 *out_work_queue = immediate_queue;
175 } else { 180 } else {
176 *out_chose_delayed_over_immediate = true; 181 *out_chose_delayed_over_immediate = true;
177 *out_work_queue = delayed_queue; 182 *out_work_queue = delayed_queue;
178 } 183 }
179 } else { 184 } else {
180 *out_work_queue = immediate_queue; 185 *out_work_queue = immediate_queue;
181 } 186 }
182 return true; 187 return true;
183 } 188 }
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 } 375 }
371 376
372 void TaskQueueSelector::SetImmediateStarvationCountForTest( 377 void TaskQueueSelector::SetImmediateStarvationCountForTest(
373 size_t immediate_starvation_count) { 378 size_t immediate_starvation_count) {
374 immediate_starvation_count_ = immediate_starvation_count; 379 immediate_starvation_count_ = immediate_starvation_count;
375 } 380 }
376 381
377 } // namespace internal 382 } // namespace internal
378 } // namespace scheduler 383 } // namespace scheduler
379 } // namespace blink 384 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698