| Index: third_party/WebKit/Source/platform/scheduler/base/work_queue_sets.h
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets.h b/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets.h
|
| index 8fa2c5d18886969e4b76edbc5c0d488d4a414180..c8e00a6eb87b0867928eaae69519c661458bc6eb 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets.h
|
| +++ b/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets.h
|
| @@ -13,7 +13,9 @@
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| #include "base/trace_event/trace_event_argument.h"
|
| +#include "platform/scheduler/base/intrusive_heap.h"
|
| #include "platform/scheduler/base/task_queue_impl.h"
|
| +#include "platform/scheduler/base/work_queue.h"
|
| #include "public/platform/WebCommon.h"
|
|
|
| namespace blink {
|
| @@ -55,7 +57,7 @@ class BLINK_PLATFORM_EXPORT WorkQueueSets {
|
| bool IsSetEmpty(size_t set_index) const;
|
|
|
| #if DCHECK_IS_ON() || !defined(NDEBUG)
|
| - // Note this iterates over everything in |enqueue_order_to_work_queue_maps_|.
|
| + // Note this iterates over everything in |work_queue_heaps_|.
|
| // It's intended for use with DCHECKS and for testing
|
| bool ContainsWorkQueueForTest(const WorkQueue* queue) const;
|
| #endif
|
| @@ -63,8 +65,22 @@ class BLINK_PLATFORM_EXPORT WorkQueueSets {
|
| const char* name() const { return name_; }
|
|
|
| private:
|
| - typedef std::map<EnqueueOrder, WorkQueue*> EnqueueOrderToWorkQueueMap;
|
| - std::vector<EnqueueOrderToWorkQueueMap> enqueue_order_to_work_queue_maps_;
|
| + struct OldestTaskEnqueueOrder {
|
| + EnqueueOrder key;
|
| + WorkQueue* value;
|
| +
|
| + bool operator<=(const OldestTaskEnqueueOrder& other) const {
|
| + return key <= other.key;
|
| + }
|
| +
|
| + void SetHeapHandle(HeapHandle handle) { value->set_heap_handle(handle); }
|
| +
|
| + void ClearHeapHandle() { value->set_heap_handle(HeapHandle()); }
|
| + };
|
| +
|
| + // For each set |work_queue_heaps_| has a queue of WorkQueue ordered by the
|
| + // oldest task in each WorkQueue.
|
| + std::vector<IntrusiveHeap<OldestTaskEnqueueOrder>> work_queue_heaps_;
|
| const char* name_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(WorkQueueSets);
|
|
|