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

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

Issue 2786083005: scheduler: Maintain a constant enqueue order for every task (Closed)
Patch Set: WASM workaround no longer needed Created 3 years, 8 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/enqueue_order.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/base/enqueue_order.cc b/third_party/WebKit/Source/platform/scheduler/base/enqueue_order.cc
index fcfd3ffdd817f4160af9c23e4f65752af447d972..d5fc4f9e2755a0c02d411a6a1ad48508e259ac79 100644
--- a/third_party/WebKit/Source/platform/scheduler/base/enqueue_order.cc
+++ b/third_party/WebKit/Source/platform/scheduler/base/enqueue_order.cc
@@ -8,16 +8,48 @@ namespace blink {
namespace scheduler {
namespace internal {
-// Note we set the first |enqueue_order_| to a specific non-zero value, because
+// Note we set the first sequence number to a specific non-zero value, because
// first N values of EnqueueOrder have special meaning (see EnqueueOrderValues).
EnqueueOrderGenerator::EnqueueOrderGenerator()
- : enqueue_order_(static_cast<EnqueueOrder>(EnqueueOrderValues::FIRST)) {}
+ : sequence_num_(static_cast<SequenceNumber>(
+ EnqueueOrderSequenceNumberValues::FIRST)) {}
EnqueueOrderGenerator::~EnqueueOrderGenerator() {}
-EnqueueOrder EnqueueOrderGenerator::GenerateNext() {
+EnqueueOrder EnqueueOrderGenerator::GenerateNext(
+ base::TimeTicks delayed_run_time) {
base::AutoLock lock(lock_);
- return enqueue_order_++;
+ return {delayed_run_time, sequence_num_++};
+}
+
+EnqueueOrder::EnqueueOrder() : sequence_num(0) {}
+
+EnqueueOrder::EnqueueOrder(base::TimeTicks delayed_run_time,
+ SequenceNumber sequence_num)
+ : delayed_run_time(delayed_run_time), sequence_num(sequence_num) {}
+
+bool EnqueueOrder::operator==(const EnqueueOrder& other) const {
+ return delayed_run_time == other.delayed_run_time &&
+ sequence_num == other.sequence_num;
+}
+
+bool EnqueueOrder::operator<=(const EnqueueOrder& other) const {
+ if (delayed_run_time > other.delayed_run_time)
+ return false;
+
+ if (delayed_run_time < other.delayed_run_time)
+ return true;
+
+ return sequence_num <= other.sequence_num;
+}
+
+bool EnqueueOrder::operator<(const EnqueueOrder& other) const {
+ return !(*this == other) && *this <= other;
+}
+
+std::ostream& operator<<(std::ostream& stream, const EnqueueOrder& value) {
+ return stream << "(" << value.delayed_run_time << ", " << value.sequence_num
+ << ")";
}
} // namespace internal

Powered by Google App Engine
This is Rietveld 408576698