Chromium Code Reviews| Index: third_party/WebKit/Source/platform/scheduler/base/work_queue.cc |
| diff --git a/third_party/WebKit/Source/platform/scheduler/base/work_queue.cc b/third_party/WebKit/Source/platform/scheduler/base/work_queue.cc |
| index f5b49d20381796bb1679ec5adf085c9a48de9460..80e1f7e65d884278a5dadb2d4a6cf4a1c86136d8 100644 |
| --- a/third_party/WebKit/Source/platform/scheduler/base/work_queue.cc |
| +++ b/third_party/WebKit/Source/platform/scheduler/base/work_queue.cc |
| @@ -50,7 +50,8 @@ bool WorkQueue::BlockedByFence() const { |
| // If the queue is empty then any future tasks will have a higher enqueue |
| // order and will be blocked. The queue is also blocked if the head is past |
| // the fence. |
| - return work_queue_.empty() || work_queue_.front().enqueue_order() > fence_; |
| + return work_queue_.empty() || |
| + work_queue_.front().enqueue_order().sequence_num > fence_; |
| } |
| bool WorkQueue::GetFrontTaskEnqueueOrder(EnqueueOrder* enqueue_order) const { |
| @@ -67,9 +68,6 @@ bool WorkQueue::GetFrontTaskEnqueueOrder(EnqueueOrder* enqueue_order) const { |
| void WorkQueue::Push(TaskQueueImpl::Task task) { |
| bool was_empty = work_queue_.empty(); |
| -#ifndef NDEBUG |
| - DCHECK(task.enqueue_order_set()); |
| -#endif |
| // Amoritized O(1). |
| work_queue_.push_back(std::move(task)); |
| @@ -131,9 +129,11 @@ void WorkQueue::AssignSetIndex(size_t work_queue_set_index) { |
| work_queue_set_index_ = work_queue_set_index; |
| } |
| -bool WorkQueue::InsertFence(EnqueueOrder fence) { |
| +bool WorkQueue::InsertFence(uint64_t fence) { |
| DCHECK_NE(fence, 0u); |
| - DCHECK(fence >= fence_ || fence == 1u); |
| + DCHECK(fence >= fence_ || |
| + fence == static_cast<uint64_t>( |
| + EnqueueOrderSequenceNumberValues::BLOCKING_FENCE)); |
| bool was_blocked_by_fence = BlockedByFence(); |
| fence_ = fence; |
| // Moving the fence forward may unblock some tasks. |
| @@ -161,8 +161,8 @@ bool WorkQueue::RemoveFence() { |
| bool WorkQueue::ShouldRunBefore(const WorkQueue* other_queue) const { |
| DCHECK(!work_queue_.empty()); |
| DCHECK(!other_queue->work_queue_.empty()); |
| - EnqueueOrder enqueue_order = 0; |
| - EnqueueOrder other_enqueue_order = 0; |
| + EnqueueOrder enqueue_order = {base::TimeTicks(), 0}; |
|
alex clarke (OOO till 29th)
2017/04/13 07:46:00
Can we have a default constructor?
Sami
2017/04/18 10:47:49
Done.
|
| + EnqueueOrder other_enqueue_order = {base::TimeTicks(), 0}; |
| bool have_task = GetFrontTaskEnqueueOrder(&enqueue_order); |
| bool have_other_task = |
| other_queue->GetFrontTaskEnqueueOrder(&other_enqueue_order); |