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

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

Issue 2546423002: [Try # 3] Scheduler refactoring to virtually eliminate redundant DoWorks (Closed)
Patch Set: Add an extra dcheck Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc
index d7c5c297dc55d40a2499d483b0d382a3ea604c96..0a24636c20c8082417c45cf28ef6cf86e92ab559 100644
--- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc
+++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.cc
@@ -163,12 +163,14 @@ bool TaskQueueSelector::PrioritizingSelector::
WorkQueue** out_work_queue) const {
WorkQueue* immediate_queue;
DCHECK_EQ(*out_chose_delayed_over_immediate, false);
- if (immediate_work_queue_sets_.GetOldestQueueInSet(priority,
- &immediate_queue)) {
+ EnqueueOrder immediate_enqueue_order;
+ if (immediate_work_queue_sets_.GetOldestQueueAndEnqueueOrderInSet(
+ priority, &immediate_queue, &immediate_enqueue_order)) {
WorkQueue* delayed_queue;
- if (delayed_work_queue_sets_.GetOldestQueueInSet(priority,
- &delayed_queue)) {
- if (immediate_queue->ShouldRunBefore(delayed_queue)) {
+ EnqueueOrder delayed_enqueue_order;
+ if (delayed_work_queue_sets_.GetOldestQueueAndEnqueueOrderInSet(
+ priority, &delayed_queue, &delayed_enqueue_order)) {
+ if (immediate_enqueue_order < delayed_enqueue_order) {
*out_work_queue = immediate_queue;
} else {
*out_chose_delayed_over_immediate = true;
@@ -189,13 +191,9 @@ bool TaskQueueSelector::PrioritizingSelector::ChooseOldestWithPriority(
// Select an immediate work queue if we are starving immediate tasks.
if (task_queue_selector_->immediate_starvation_count_ >=
kMaxDelayedStarvationTasks) {
- if (ChooseOldestImmediateTaskWithPriority(priority, out_work_queue)) {
+ if (ChooseOldestImmediateTaskWithPriority(priority, out_work_queue))
return true;
- }
- if (ChooseOldestDelayedTaskWithPriority(priority, out_work_queue)) {
- return true;
- }
- return false;
+ return ChooseOldestDelayedTaskWithPriority(priority, out_work_queue);
}
return ChooseOldestImmediateOrDelayedTaskWithPriority(
priority, out_chose_delayed_over_immediate, out_work_queue);

Powered by Google App Engine
This is Rietveld 408576698