LCOV - code coverage report
Current view: top level - src - counters-inl.h (source / functions) Hit Total Coverage
Test: app.info Lines: 15 16 93.8 %
Date: 2019-04-19 Functions: 2 2 100.0 %

          Line data    Source code
       1             : // Copyright 2016 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #ifndef V8_COUNTERS_INL_H_
       6             : #define V8_COUNTERS_INL_H_
       7             : 
       8             : #include "src/counters.h"
       9             : 
      10             : namespace v8 {
      11             : namespace internal {
      12             : 
      13       27429 : void RuntimeCallTimer::Start(RuntimeCallCounter* counter,
      14             :                              RuntimeCallTimer* parent) {
      15             :   DCHECK(!IsStarted());
      16       27429 :   counter_ = counter;
      17             :   parent_.SetValue(parent);
      18       27429 :   if (TracingFlags::runtime_stats.load(std::memory_order_relaxed) ==
      19             :       v8::tracing::TracingCategoryObserver::ENABLED_BY_SAMPLING) {
      20           0 :     return;
      21             :   }
      22       27429 :   base::TimeTicks now = RuntimeCallTimer::Now();
      23       27429 :   if (parent) parent->Pause(now);
      24             :   Resume(now);
      25             :   DCHECK(IsStarted());
      26             : }
      27             : 
      28             : void RuntimeCallTimer::Pause(base::TimeTicks now) {
      29             :   DCHECK(IsStarted());
      30             :   elapsed_ += (now - start_ticks_);
      31       54808 :   start_ticks_ = base::TimeTicks();
      32             : }
      33             : 
      34             : void RuntimeCallTimer::Resume(base::TimeTicks now) {
      35             :   DCHECK(!IsStarted());
      36       54808 :   start_ticks_ = now;
      37             : }
      38             : 
      39       27429 : RuntimeCallTimer* RuntimeCallTimer::Stop() {
      40       27429 :   if (!IsStarted()) return parent();
      41       27429 :   base::TimeTicks now = RuntimeCallTimer::Now();
      42             :   Pause(now);
      43       27429 :   counter_->Increment();
      44             :   CommitTimeToCounter();
      45             : 
      46             :   RuntimeCallTimer* parent_timer = parent();
      47       27429 :   if (parent_timer) {
      48             :     parent_timer->Resume(now);
      49             :   }
      50             :   return parent_timer;
      51             : }
      52             : 
      53             : void RuntimeCallTimer::CommitTimeToCounter() {
      54       27436 :   counter_->Add(elapsed_);
      55       27436 :   elapsed_ = base::TimeDelta();
      56             : }
      57             : 
      58             : bool RuntimeCallTimer::IsStarted() { return start_ticks_ != base::TimeTicks(); }
      59             : 
      60             : RuntimeCallTimerScope::RuntimeCallTimerScope(Isolate* isolate,
      61             :                                              HeapObject heap_object,
      62             :                                              RuntimeCallCounterId counter_id)
      63    54005423 :     : RuntimeCallTimerScope(isolate, counter_id) {}
      64             : 
      65             : }  // namespace internal
      66             : }  // namespace v8
      67             : 
      68             : #endif  // V8_COUNTERS_INL_H_

Generated by: LCOV version 1.10