LCOV - code coverage report
Current view: top level - src/heap - embedder-tracing.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 27 29 93.1 %
Date: 2017-04-26 Functions: 7 8 87.5 %

          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             : #include "src/heap/embedder-tracing.h"
       6             : 
       7             : #include "src/base/logging.h"
       8             : 
       9             : namespace v8 {
      10             : namespace internal {
      11             : 
      12       53427 : void LocalEmbedderHeapTracer::TracePrologue() {
      13      106854 :   if (!InUse()) return;
      14             : 
      15           1 :   CHECK(cached_wrappers_to_trace_.empty());
      16           1 :   num_v8_marking_deque_was_empty_ = 0;
      17           1 :   remote_tracer_->TracePrologue();
      18             : }
      19             : 
      20       53348 : void LocalEmbedderHeapTracer::TraceEpilogue() {
      21      106696 :   if (!InUse()) return;
      22             : 
      23           1 :   CHECK(cached_wrappers_to_trace_.empty());
      24           1 :   remote_tracer_->TraceEpilogue();
      25             : }
      26             : 
      27          54 : void LocalEmbedderHeapTracer::AbortTracing() {
      28         108 :   if (!InUse()) return;
      29             : 
      30             :   cached_wrappers_to_trace_.clear();
      31           2 :   remote_tracer_->AbortTracing();
      32             : }
      33             : 
      34       53348 : void LocalEmbedderHeapTracer::EnterFinalPause() {
      35      106696 :   if (!InUse()) return;
      36             : 
      37           1 :   remote_tracer_->EnterFinalPause();
      38             : }
      39             : 
      40           3 : bool LocalEmbedderHeapTracer::Trace(
      41           3 :     double deadline, EmbedderHeapTracer::AdvanceTracingActions actions) {
      42           3 :   if (!InUse()) return false;
      43             : 
      44             :   DCHECK_EQ(0, NumberOfCachedWrappersToTrace());
      45           2 :   return remote_tracer_->AdvanceTracing(deadline, actions);
      46             : }
      47             : 
      48      106694 : size_t LocalEmbedderHeapTracer::NumberOfWrappersToTrace() {
      49             :   return (InUse())
      50           2 :              ? cached_wrappers_to_trace_.size() +
      51           2 :                    remote_tracer_->NumberOfWrappersToTrace()
      52      106696 :              : 0;
      53             : }
      54             : 
      55       96697 : void LocalEmbedderHeapTracer::RegisterWrappersWithRemoteTracer() {
      56       96697 :   if (!InUse()) return;
      57             : 
      58           3 :   if (cached_wrappers_to_trace_.empty()) {
      59             :     return;
      60             :   }
      61             : 
      62           3 :   remote_tracer_->RegisterV8References(cached_wrappers_to_trace_);
      63             :   cached_wrappers_to_trace_.clear();
      64             : }
      65             : 
      66           0 : bool LocalEmbedderHeapTracer::RequiresImmediateWrapperProcessing() {
      67             :   const size_t kTooManyWrappers = 16000;
      68           0 :   return cached_wrappers_to_trace_.size() > kTooManyWrappers;
      69             : }
      70             : 
      71             : }  // namespace internal
      72             : }  // namespace v8

Generated by: LCOV version 1.10