Index: third_party/WebKit/Source/platform/scheduler/base/time_domain.h |
diff --git a/third_party/WebKit/Source/platform/scheduler/base/time_domain.h b/third_party/WebKit/Source/platform/scheduler/base/time_domain.h |
index 52c7678eea23ac5de1257546e25a5172f24ea4fa..88aa5c3ad23a1834f300fd0a93c33943e81b4b3c 100644 |
--- a/third_party/WebKit/Source/platform/scheduler/base/time_domain.h |
+++ b/third_party/WebKit/Source/platform/scheduler/base/time_domain.h |
@@ -15,6 +15,7 @@ |
#include "base/time/time.h" |
#include "platform/scheduler/base/lazy_now.h" |
#include "platform/scheduler/base/task_queue_impl.h" |
+#include "wtf/FlatSet.h" |
namespace blink { |
namespace scheduler { |
@@ -24,6 +25,10 @@ class TaskQueueImpl; |
class TaskQueueManager; |
class TaskQueueManagerDelegate; |
+std::ostream& operator<<( |
+ std::ostream& os, |
+ const std::pair<base::TimeTicks, internal::TaskQueueImpl*>& pair); |
+ |
// The TimeDomain's job is to wake task queues up when their next delayed tasks |
// are due to fire. TaskQueues request a wake up via ScheduleDelayedWork, when |
// the wake up is due the TimeDomain calls TaskQueue::WakeUpForDelayedWork. |
@@ -134,20 +139,10 @@ class BLINK_PLATFORM_EXPORT TimeDomain { |
private: |
void MoveNewlyUpdatableQueuesIntoUpdatableQueueSet(); |
- using DelayedWakeupMultimap = |
- std::multimap<base::TimeTicks, internal::TaskQueueImpl*>; |
- |
- DelayedWakeupMultimap delayed_wakeup_multimap_; |
+ using DelayedWakeupSet = |
+ WTF::FlatSet<std::pair<base::TimeTicks, internal::TaskQueueImpl*>>; |
- // This map makes it easy to remove a queue from |delayed_wakeup_multimap_|. |
- // NOTE inserting or removing elements from a std::map does not invalidate any |
- // iterators. |
- using QueueToDelayedWakeupMultimapIteratorMap = |
- std::unordered_map<internal::TaskQueueImpl*, |
- DelayedWakeupMultimap::iterator>; |
- |
- QueueToDelayedWakeupMultimapIteratorMap |
- queue_to_delayed_wakeup_multimap_iterator_map_; |
+ DelayedWakeupSet delayed_wakeup_set_; |
// This lock guards only |newly_updatable_|. It's not expected to be heavily |
// contended. |
@@ -158,6 +153,8 @@ class BLINK_PLATFORM_EXPORT TimeDomain { |
// only be accessed from the main thread. |
std::set<internal::TaskQueueImpl*> updatable_queue_set_; |
+ std::set<internal::TaskQueueImpl*> queues_; |
+ |
Observer* observer_; // NOT OWNED. |
base::ThreadChecker main_thread_checker_; |