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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/base/time_domain.cc

Issue 2258133002: [scheduler] Implement time-based cpu throttling. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "platform/scheduler/base/time_domain.h" 5 #include "platform/scheduler/base/time_domain.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "platform/scheduler/base/task_queue_impl.h" 9 #include "platform/scheduler/base/task_queue_impl.h"
10 #include "platform/scheduler/base/task_queue_manager_delegate.h" 10 #include "platform/scheduler/base/task_queue_manager_delegate.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 // TODO(alexclarke): Use C++17 extract & insert to more efficiently modify 92 // TODO(alexclarke): Use C++17 extract & insert to more efficiently modify
93 // |queue_to_delayed_wakeup_multimap_iterator_map_|. 93 // |queue_to_delayed_wakeup_multimap_iterator_map_|.
94 it->second = delayed_wakeup_multimap_.insert({delayed_run_time, queue}); 94 it->second = delayed_wakeup_multimap_.insert({delayed_run_time, queue});
95 } else { 95 } else {
96 // Insert the wakeup and store the map iterator for later convenience. 96 // Insert the wakeup and store the map iterator for later convenience.
97 queue_to_delayed_wakeup_multimap_iterator_map_.insert( 97 queue_to_delayed_wakeup_multimap_iterator_map_.insert(
98 {queue, delayed_wakeup_multimap_.insert({delayed_run_time, queue})}); 98 {queue, delayed_wakeup_multimap_.insert({delayed_run_time, queue})});
99 } 99 }
100 100
101 if (observer_) 101 if (observer_)
102 observer_->OnTimeDomainHasDelayedWork(); 102 observer_->OnTimeDomainHasDelayedWork(queue);
103 } 103 }
104 104
105 void TimeDomain::RegisterAsUpdatableTaskQueue(internal::TaskQueueImpl* queue) { 105 void TimeDomain::RegisterAsUpdatableTaskQueue(internal::TaskQueueImpl* queue) {
106 { 106 {
107 base::AutoLock lock(newly_updatable_lock_); 107 base::AutoLock lock(newly_updatable_lock_);
108 newly_updatable_.push_back(queue); 108 newly_updatable_.push_back(queue);
109 } 109 }
110 if (observer_) 110 if (observer_)
111 observer_->OnTimeDomainHasImmediateWork(); 111 observer_->OnTimeDomainHasImmediateWork(queue);
112 } 112 }
113 113
114 bool TimeDomain::UnregisterAsUpdatableTaskQueue( 114 bool TimeDomain::UnregisterAsUpdatableTaskQueue(
115 internal::TaskQueueImpl* queue) { 115 internal::TaskQueueImpl* queue) {
116 DCHECK(main_thread_checker_.CalledOnValidThread()); 116 DCHECK(main_thread_checker_.CalledOnValidThread());
117 117
118 bool was_updatable = updatable_queue_set_.erase(queue) != 0; 118 bool was_updatable = updatable_queue_set_.erase(queue) != 0;
119 119
120 base::AutoLock lock(newly_updatable_lock_); 120 base::AutoLock lock(newly_updatable_lock_);
121 // Remove all copies of |queue| from |newly_updatable_|. 121 // Remove all copies of |queue| from |newly_updatable_|.
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 if (!delayed_wakeup_multimap_.empty()) { 213 if (!delayed_wakeup_multimap_.empty()) {
214 base::TimeDelta delay = delayed_wakeup_multimap_.begin()->first - Now(); 214 base::TimeDelta delay = delayed_wakeup_multimap_.begin()->first - Now();
215 state->SetDouble("next_delay_ms", delay.InMillisecondsF()); 215 state->SetDouble("next_delay_ms", delay.InMillisecondsF());
216 } 216 }
217 AsValueIntoInternal(state); 217 AsValueIntoInternal(state);
218 state->EndDictionary(); 218 state->EndDictionary();
219 } 219 }
220 220
221 } // namespace scheduler 221 } // namespace scheduler
222 } // namespace blink 222 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698