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

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

Issue 2396533004: Introduce a FlatMap and FlatSet into WTF (Closed)
Patch Set: Add missing ostream override Created 4 years, 2 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/work_queue_sets.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets.cc b/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets.cc
index 194524f1740f557c25154ab3aeed6097d013fef3..94c39add872cf50643d73b9c5a85f3625483fb3a 100644
--- a/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets.cc
+++ b/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets.cc
@@ -25,7 +25,7 @@ void WorkQueueSets::AddQueue(WorkQueue* work_queue, size_t set_index) {
work_queue->AssignSetIndex(set_index);
if (!has_enqueue_order)
return;
- enqueue_order_to_work_queue_maps_[set_index].insert(
+ enqueue_order_to_work_queue_maps_[set_index].insertUnique(
std::make_pair(enqueue_order, work_queue));
}
@@ -56,7 +56,7 @@ void WorkQueueSets::ChangeSetIndex(WorkQueue* work_queue, size_t 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(
+ enqueue_order_to_work_queue_maps_[set_index].insertUnique(
std::make_pair(enqueue_order, work_queue));
}
@@ -70,7 +70,7 @@ void WorkQueueSets::OnPushQueue(WorkQueue* work_queue) {
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(
+ enqueue_order_to_work_queue_maps_[set_index].insertUnique(
std::make_pair(enqueue_order, work_queue));
}
@@ -84,17 +84,14 @@ void WorkQueueSets::OnPopQueue(WorkQueue* work_queue) {
DCHECK_EQ(enqueue_order_to_work_queue_maps_[set_index].begin()->second,
work_queue)
<< " set_index = " << set_index;
- EnqueueOrderToWorkQueueMap::iterator old_it =
- enqueue_order_to_work_queue_maps_[set_index].begin();
EnqueueOrder enqueue_order;
if (work_queue->GetFrontTaskEnqueueOrder(&enqueue_order)) {
- // Amortized O(1) if the new location is close to |old_it|, otherwise
- // O(log n).
- enqueue_order_to_work_queue_maps_[set_index].insert(
- std::make_pair(enqueue_order, work_queue));
+ enqueue_order_to_work_queue_maps_[set_index].ChangeKeyUnique(
+ enqueue_order_to_work_queue_maps_[set_index].begin(), enqueue_order);
+ } else {
+ enqueue_order_to_work_queue_maps_[set_index].erase(
+ enqueue_order_to_work_queue_maps_[set_index].begin());
}
- // O(1)
- enqueue_order_to_work_queue_maps_[set_index].erase(old_it);
}
bool WorkQueueSets::GetOldestQueueInSet(size_t set_index,

Powered by Google App Engine
This is Rietveld 408576698