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

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: Update VirtualTimeTest 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..a02f040cae3cd940c8bde75b17c8c4f33b881736 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,42 @@ 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<uint64_t>(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_++};
+}
+
+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