| OLD | NEW | 
|    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/renderer/task_queue_throttler.h" |    5 #include "platform/scheduler/renderer/task_queue_throttler.h" | 
|    6  |    6  | 
|    7 #include <cstdint> |    7 #include <cstdint> | 
|    8  |    8  | 
|    9 #include "base/format_macros.h" |  | 
|   10 #include "base/logging.h" |    9 #include "base/logging.h" | 
|   11 #include "base/memory/ptr_util.h" |   10 #include "base/memory/ptr_util.h" | 
|   12 #include "base/optional.h" |   11 #include "base/optional.h" | 
|   13 #include "base/strings/stringprintf.h" |  | 
|   14 #include "platform/WebFrameScheduler.h" |   12 #include "platform/WebFrameScheduler.h" | 
|   15 #include "platform/scheduler/base/real_time_domain.h" |   13 #include "platform/scheduler/base/real_time_domain.h" | 
 |   14 #include "platform/scheduler/base/trace_helper.h" | 
|   16 #include "platform/scheduler/child/scheduler_tqm_delegate.h" |   15 #include "platform/scheduler/child/scheduler_tqm_delegate.h" | 
|   17 #include "platform/scheduler/renderer/budget_pool.h" |   16 #include "platform/scheduler/renderer/budget_pool.h" | 
|   18 #include "platform/scheduler/renderer/renderer_scheduler_impl.h" |   17 #include "platform/scheduler/renderer/renderer_scheduler_impl.h" | 
|   19 #include "platform/scheduler/renderer/throttled_time_domain.h" |   18 #include "platform/scheduler/renderer/throttled_time_domain.h" | 
|   20 #include "platform/scheduler/renderer/web_frame_scheduler_impl.h" |   19 #include "platform/scheduler/renderer/web_frame_scheduler_impl.h" | 
|   21  |   20  | 
|   22 namespace blink { |   21 namespace blink { | 
|   23 namespace scheduler { |   22 namespace scheduler { | 
|   24  |   23  | 
|   25 namespace { |   24 namespace { | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   57  |   56  | 
|   58 template <class T> |   57 template <class T> | 
|   59 base::Optional<T> Max(const base::Optional<T>& a, const base::Optional<T>& b) { |   58 base::Optional<T> Max(const base::Optional<T>& a, const base::Optional<T>& b) { | 
|   60   if (!b) |   59   if (!b) | 
|   61     return a; |   60     return a; | 
|   62   if (!a) |   61   if (!a) | 
|   63     return b; |   62     return b; | 
|   64   return std::max(a.value(), b.value()); |   63   return std::max(a.value(), b.value()); | 
|   65 } |   64 } | 
|   66  |   65  | 
|   67 std::string PointerToId(void* pointer) { |  | 
|   68   return base::StringPrintf( |  | 
|   69       "0x%" PRIx64, |  | 
|   70       static_cast<uint64_t>(reinterpret_cast<uintptr_t>(pointer))); |  | 
|   71 } |  | 
|   72  |  | 
|   73 }  // namespace |   66 }  // namespace | 
|   74  |   67  | 
|   75 TaskQueueThrottler::TaskQueueThrottler( |   68 TaskQueueThrottler::TaskQueueThrottler( | 
|   76     RendererSchedulerImpl* renderer_scheduler) |   69     RendererSchedulerImpl* renderer_scheduler) | 
|   77     : control_task_queue_(renderer_scheduler->ControlTaskQueue()), |   70     : control_task_queue_(renderer_scheduler->ControlTaskQueue()), | 
|   78       renderer_scheduler_(renderer_scheduler), |   71       renderer_scheduler_(renderer_scheduler), | 
|   79       tick_clock_(renderer_scheduler->tick_clock()), |   72       tick_clock_(renderer_scheduler->tick_clock()), | 
|   80       time_domain_(new ThrottledTimeDomain()), |   73       time_domain_(new ThrottledTimeDomain()), | 
|   81       allow_throttling_(true), |   74       allow_throttling_(true), | 
|   82       weak_factory_(this) { |   75       weak_factory_(this) { | 
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  434  |  427  | 
|  435   state->BeginDictionary("time_budget_pools"); |  428   state->BeginDictionary("time_budget_pools"); | 
|  436   for (const auto& map_entry : budget_pools_) { |  429   for (const auto& map_entry : budget_pools_) { | 
|  437     BudgetPool* pool = map_entry.first; |  430     BudgetPool* pool = map_entry.first; | 
|  438     pool->AsValueInto(state, now); |  431     pool->AsValueInto(state, now); | 
|  439   } |  432   } | 
|  440   state->EndDictionary(); |  433   state->EndDictionary(); | 
|  441  |  434  | 
|  442   state->BeginDictionary("queue_details"); |  435   state->BeginDictionary("queue_details"); | 
|  443   for (const auto& map_entry : queue_details_) { |  436   for (const auto& map_entry : queue_details_) { | 
|  444     state->BeginDictionaryWithCopiedName(PointerToId(map_entry.first)); |  437     state->BeginDictionaryWithCopiedName( | 
 |  438         trace_helper::PointerToString(map_entry.first)); | 
|  445  |  439  | 
|  446     state->SetInteger("throttling_ref_count", |  440     state->SetInteger("throttling_ref_count", | 
|  447                       map_entry.second.throttling_ref_count); |  441                       map_entry.second.throttling_ref_count); | 
|  448  |  442  | 
|  449     state->EndDictionary(); |  443     state->EndDictionary(); | 
|  450   } |  444   } | 
|  451   state->EndDictionary(); |  445   state->EndDictionary(); | 
|  452 } |  446 } | 
|  453  |  447  | 
|  454 void TaskQueueThrottler::AddQueueToBudgetPool(TaskQueue* queue, |  448 void TaskQueueThrottler::AddQueueToBudgetPool(TaskQueue* queue, | 
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  559     queue->InsertFence(TaskQueue::InsertFencePosition::BEGINNING_OF_TIME); |  553     queue->InsertFence(TaskQueue::InsertFencePosition::BEGINNING_OF_TIME); | 
|  560     queue->SetTimeDomain(time_domain_.get()); |  554     queue->SetTimeDomain(time_domain_.get()); | 
|  561     UpdateQueueThrottlingState(lazy_now.Now(), queue); |  555     UpdateQueueThrottlingState(lazy_now.Now(), queue); | 
|  562   } |  556   } | 
|  563  |  557  | 
|  564   TRACE_EVENT0("renderer.scheduler", "TaskQueueThrottler_EnableThrottling"); |  558   TRACE_EVENT0("renderer.scheduler", "TaskQueueThrottler_EnableThrottling"); | 
|  565 } |  559 } | 
|  566  |  560  | 
|  567 }  // namespace scheduler |  561 }  // namespace scheduler | 
|  568 }  // namespace blink |  562 }  // namespace blink | 
| OLD | NEW |