LCOV - code coverage report
Current view: top level - src/compiler - pipeline-statistics.h (source / functions) Hit Total Coverage
Test: app.info Lines: 3 5 60.0 %
Date: 2017-04-26 Functions: 0 0 -

          Line data    Source code
       1             : // Copyright 2014 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_COMPILER_PIPELINE_STATISTICS_H_
       6             : #define V8_COMPILER_PIPELINE_STATISTICS_H_
       7             : 
       8             : #include <memory>
       9             : #include <string>
      10             : 
      11             : #include "src/base/platform/elapsed-timer.h"
      12             : #include "src/compilation-statistics.h"
      13             : #include "src/compiler/zone-stats.h"
      14             : 
      15             : namespace v8 {
      16             : namespace internal {
      17             : namespace compiler {
      18             : 
      19             : class PhaseScope;
      20             : 
      21             : class PipelineStatistics : public Malloced {
      22             :  public:
      23             :   PipelineStatistics(CompilationInfo* info, ZoneStats* zone_stats);
      24             :   ~PipelineStatistics();
      25             : 
      26             :   void BeginPhaseKind(const char* phase_kind_name);
      27             :   void EndPhaseKind();
      28             : 
      29             :  private:
      30             :   size_t OuterZoneSize() {
      31           0 :     return static_cast<size_t>(outer_zone_->allocation_size());
      32             :   }
      33             : 
      34             :   class CommonStats {
      35             :    public:
      36           0 :     CommonStats() : outer_zone_initial_size_(0) {}
      37             : 
      38             :     void Begin(PipelineStatistics* pipeline_stats);
      39             :     void End(PipelineStatistics* pipeline_stats,
      40             :              CompilationStatistics::BasicStats* diff);
      41             : 
      42             :     std::unique_ptr<ZoneStats::StatsScope> scope_;
      43             :     base::ElapsedTimer timer_;
      44             :     size_t outer_zone_initial_size_;
      45             :     size_t allocated_bytes_at_start_;
      46             : 
      47             :    private:
      48             :     DISALLOW_COPY_AND_ASSIGN(CommonStats);
      49             :   };
      50             : 
      51             :   bool InPhaseKind() { return !!phase_kind_stats_.scope_; }
      52             : 
      53             :   friend class PhaseScope;
      54             :   bool InPhase() { return !!phase_stats_.scope_; }
      55             :   void BeginPhase(const char* name);
      56             :   void EndPhase();
      57             : 
      58             :   Isolate* isolate_;
      59             :   Zone* outer_zone_;
      60             :   ZoneStats* zone_stats_;
      61             :   CompilationStatistics* compilation_stats_;
      62             :   std::string function_name_;
      63             : 
      64             :   // Stats for the entire compilation.
      65             :   CommonStats total_stats_;
      66             :   size_t source_size_;
      67             : 
      68             :   // Stats for phase kind.
      69             :   const char* phase_kind_name_;
      70             :   CommonStats phase_kind_stats_;
      71             : 
      72             :   // Stats for phase.
      73             :   const char* phase_name_;
      74             :   CommonStats phase_stats_;
      75             : 
      76             :   DISALLOW_COPY_AND_ASSIGN(PipelineStatistics);
      77             : };
      78             : 
      79             : 
      80             : class PhaseScope {
      81             :  public:
      82             :   PhaseScope(PipelineStatistics* pipeline_stats, const char* name)
      83    25206951 :       : pipeline_stats_(pipeline_stats) {
      84    25630172 :     if (pipeline_stats_ != nullptr) pipeline_stats_->BeginPhase(name);
      85             :   }
      86             :   ~PhaseScope() {
      87    25631653 :     if (pipeline_stats_ != nullptr) pipeline_stats_->EndPhase();
      88             :   }
      89             : 
      90             :  private:
      91             :   PipelineStatistics* const pipeline_stats_;
      92             : 
      93             :   DISALLOW_COPY_AND_ASSIGN(PhaseScope);
      94             : };
      95             : 
      96             : }  // namespace compiler
      97             : }  // namespace internal
      98             : }  // namespace v8
      99             : 
     100             : #endif

Generated by: LCOV version 1.10