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

Unified Diff: components/scheduler/base/work_queue_sets.cc

Issue 2118903002: scheduler: Move the Blink scheduler into Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 4 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
« no previous file with comments | « components/scheduler/base/work_queue_sets.h ('k') | components/scheduler/base/work_queue_sets_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/scheduler/base/work_queue_sets.cc
diff --git a/components/scheduler/base/work_queue_sets.cc b/components/scheduler/base/work_queue_sets.cc
deleted file mode 100644
index 96c5da4a01fc2877eea7e897d6f7c31f1d85f327..0000000000000000000000000000000000000000
--- a/components/scheduler/base/work_queue_sets.cc
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/scheduler/base/work_queue_sets.h"
-
-#include "base/logging.h"
-#include "components/scheduler/base/work_queue.h"
-
-namespace scheduler {
-namespace internal {
-
-WorkQueueSets::WorkQueueSets(size_t num_sets, const char* name)
- : enqueue_order_to_work_queue_maps_(num_sets), name_(name) {}
-
-WorkQueueSets::~WorkQueueSets() {}
-
-void WorkQueueSets::AddQueue(WorkQueue* work_queue, size_t set_index) {
- DCHECK(!work_queue->work_queue_sets());
- DCHECK_LT(set_index, enqueue_order_to_work_queue_maps_.size());
- EnqueueOrder enqueue_order;
- bool has_enqueue_order = work_queue->GetFrontTaskEnqueueOrder(&enqueue_order);
- work_queue->AssignToWorkQueueSets(this);
- work_queue->AssignSetIndex(set_index);
- if (!has_enqueue_order)
- return;
- enqueue_order_to_work_queue_maps_[set_index].insert(
- std::make_pair(enqueue_order, work_queue));
-}
-
-void WorkQueueSets::RemoveQueue(WorkQueue* work_queue) {
- DCHECK_EQ(this, work_queue->work_queue_sets());
- EnqueueOrder enqueue_order;
- bool has_enqueue_order = work_queue->GetFrontTaskEnqueueOrder(&enqueue_order);
- work_queue->AssignToWorkQueueSets(nullptr);
- if (!has_enqueue_order)
- return;
- size_t set_index = work_queue->work_queue_set_index();
- DCHECK_LT(set_index, enqueue_order_to_work_queue_maps_.size());
- DCHECK_EQ(
- work_queue,
- enqueue_order_to_work_queue_maps_[set_index].find(enqueue_order)->second);
- enqueue_order_to_work_queue_maps_[set_index].erase(enqueue_order);
-}
-
-void WorkQueueSets::ChangeSetIndex(WorkQueue* work_queue, size_t set_index) {
- DCHECK_EQ(this, work_queue->work_queue_sets());
- DCHECK_LT(set_index, enqueue_order_to_work_queue_maps_.size());
- EnqueueOrder enqueue_order;
- bool has_enqueue_order = work_queue->GetFrontTaskEnqueueOrder(&enqueue_order);
- size_t old_set = work_queue->work_queue_set_index();
- DCHECK_LT(old_set, enqueue_order_to_work_queue_maps_.size());
- DCHECK_NE(old_set, set_index);
- work_queue->AssignSetIndex(set_index);
- if (!has_enqueue_order)
- return;
- enqueue_order_to_work_queue_maps_[old_set].erase(enqueue_order);
- enqueue_order_to_work_queue_maps_[set_index].insert(
- std::make_pair(enqueue_order, work_queue));
-}
-
-void WorkQueueSets::OnPushQueue(WorkQueue* work_queue) {
- // NOTE if this funciton changes, we need to keep |WorkQueueSets::AddQueue| in
- // sync.
- DCHECK_EQ(this, work_queue->work_queue_sets());
- EnqueueOrder enqueue_order;
- bool has_enqueue_order = work_queue->GetFrontTaskEnqueueOrder(&enqueue_order);
- DCHECK(has_enqueue_order);
- size_t set_index = work_queue->work_queue_set_index();
- DCHECK_LT(set_index, enqueue_order_to_work_queue_maps_.size())
- << " set_index = " << set_index;
- enqueue_order_to_work_queue_maps_[set_index].insert(
- std::make_pair(enqueue_order, work_queue));
-}
-
-void WorkQueueSets::OnPopQueue(WorkQueue* work_queue) {
- size_t set_index = work_queue->work_queue_set_index();
- DCHECK_EQ(this, work_queue->work_queue_sets());
- DCHECK_LT(set_index, enqueue_order_to_work_queue_maps_.size());
- DCHECK(!enqueue_order_to_work_queue_maps_[set_index].empty())
- << " set_index = " << set_index;
- DCHECK_EQ(enqueue_order_to_work_queue_maps_[set_index].begin()->second,
- work_queue)
- << " set_index = " << set_index;
- // O(1) amortised.
- enqueue_order_to_work_queue_maps_[set_index].erase(
- enqueue_order_to_work_queue_maps_[set_index].begin());
- EnqueueOrder enqueue_order;
- bool has_enqueue_order = work_queue->GetFrontTaskEnqueueOrder(&enqueue_order);
- if (!has_enqueue_order)
- return;
- enqueue_order_to_work_queue_maps_[set_index].insert(
- std::make_pair(enqueue_order, work_queue));
-}
-
-bool WorkQueueSets::GetOldestQueueInSet(size_t set_index,
- WorkQueue** out_work_queue) const {
- DCHECK_LT(set_index, enqueue_order_to_work_queue_maps_.size());
- if (enqueue_order_to_work_queue_maps_[set_index].empty())
- return false;
- *out_work_queue =
- enqueue_order_to_work_queue_maps_[set_index].begin()->second;
-#ifndef NDEBUG
- EnqueueOrder enqueue_order;
- DCHECK((*out_work_queue)->GetFrontTaskEnqueueOrder(&enqueue_order));
- DCHECK_EQ(enqueue_order,
- enqueue_order_to_work_queue_maps_[set_index].begin()->first);
-#endif
- return true;
-}
-
-bool WorkQueueSets::IsSetEmpty(size_t set_index) const {
- DCHECK_LT(set_index, enqueue_order_to_work_queue_maps_.size())
- << " set_index = " << set_index;
- return enqueue_order_to_work_queue_maps_[set_index].empty();
-}
-
-#if DCHECK_IS_ON() || !defined(NDEBUG)
-bool WorkQueueSets::ContainsWorkQueueForTest(
- const WorkQueue* work_queue) const {
- EnqueueOrder enqueue_order;
- bool has_enqueue_order = work_queue->GetFrontTaskEnqueueOrder(&enqueue_order);
-
- for (const EnqueueOrderToWorkQueueMap& map :
- enqueue_order_to_work_queue_maps_) {
- for (const EnqueueOrderToWorkQueueMap::value_type& key_value_pair : map) {
- if (key_value_pair.second == work_queue) {
- DCHECK(has_enqueue_order);
- DCHECK_EQ(key_value_pair.first, enqueue_order);
- DCHECK_EQ(this, work_queue->work_queue_sets());
- return true;
- }
- }
- }
-
- if (work_queue->work_queue_sets() == this) {
- DCHECK(!has_enqueue_order);
- return true;
- }
-
- return false;
-}
-#endif
-
-} // namespace internal
-} // namespace scheduler
« no previous file with comments | « components/scheduler/base/work_queue_sets.h ('k') | components/scheduler/base/work_queue_sets_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698