LCOV - code coverage report
Current view: top level - src/profiler - profile-generator-inl.h (source / functions) Hit Total Coverage
Test: app.info Lines: 18 20 90.0 %
Date: 2019-04-19 Functions: 2 2 100.0 %

          Line data    Source code
       1             : // Copyright 2010 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_PROFILER_PROFILE_GENERATOR_INL_H_
       6             : #define V8_PROFILER_PROFILE_GENERATOR_INL_H_
       7             : 
       8             : #include "src/profiler/profile-generator.h"
       9             : 
      10             : namespace v8 {
      11             : namespace internal {
      12             : 
      13             : CodeEntry::CodeEntry(CodeEventListener::LogEventsAndTags tag, const char* name,
      14             :                      const char* resource_name, int line_number,
      15             :                      int column_number,
      16             :                      std::unique_ptr<SourcePositionTable> line_info,
      17             :                      Address instruction_start, bool is_shared_cross_origin)
      18      630132 :     : bit_field_(TagField::encode(tag) |
      19      603901 :                  BuiltinIdField::encode(Builtins::builtin_count) |
      20             :                  SharedCrossOriginField::encode(is_shared_cross_origin)),
      21             :       name_(name),
      22             :       resource_name_(resource_name),
      23             :       line_number_(line_number),
      24             :       column_number_(column_number),
      25             :       script_id_(v8::UnboundScript::kNoScriptId),
      26             :       position_(0),
      27             :       line_info_(std::move(line_info)),
      28     3081998 :       instruction_start_(instruction_start) {}
      29             : 
      30             : inline CodeEntry* ProfileGenerator::FindEntry(Address address) {
      31      303682 :   CodeEntry* entry = code_map_.FindEntry(address);
      32      303682 :   if (entry) entry->mark_used();
      33             :   return entry;
      34             : }
      35             : 
      36        5942 : ProfileNode::ProfileNode(ProfileTree* tree, CodeEntry* entry,
      37             :                          ProfileNode* parent, int line_number)
      38             :     : tree_(tree),
      39             :       entry_(entry),
      40             :       self_ticks_(0),
      41             :       line_number_(line_number),
      42             :       parent_(parent),
      43       23768 :       id_(tree->next_node_id()) {
      44        5942 :   tree_->EnqueueNode(this);
      45        5942 : }
      46             : 
      47             : inline unsigned ProfileNode::function_id() const {
      48           0 :   return tree_->GetFunctionId(this);
      49             : }
      50             : 
      51        3041 : inline CpuProfileNode::SourceType ProfileNode::source_type() const {
      52             :   // Handle metadata and VM state code entry types.
      53        8545 :   if (entry_ == CodeEntry::program_entry() ||
      54       10368 :       entry_ == CodeEntry::idle_entry() || entry_ == CodeEntry::gc_entry() ||
      55        2421 :       entry_ == CodeEntry::root_entry()) {
      56             :     return CpuProfileNode::kInternal;
      57             :   }
      58        3614 :   if (entry_ == CodeEntry::unresolved_entry())
      59             :     return CpuProfileNode::kUnresolved;
      60             : 
      61             :   // Otherwise, resolve based on logger tag.
      62        3604 :   switch (entry_->tag()) {
      63             :     case CodeEventListener::EVAL_TAG:
      64             :     case CodeEventListener::SCRIPT_TAG:
      65             :     case CodeEventListener::LAZY_COMPILE_TAG:
      66             :     case CodeEventListener::FUNCTION_TAG:
      67             :     case CodeEventListener::INTERPRETED_FUNCTION_TAG:
      68             :       return CpuProfileNode::kScript;
      69             :     case CodeEventListener::BUILTIN_TAG:
      70             :     case CodeEventListener::HANDLER_TAG:
      71             :     case CodeEventListener::BYTECODE_HANDLER_TAG:
      72             :     case CodeEventListener::NATIVE_FUNCTION_TAG:
      73             :     case CodeEventListener::NATIVE_SCRIPT_TAG:
      74             :     case CodeEventListener::NATIVE_LAZY_COMPILE_TAG:
      75           5 :       return CpuProfileNode::kBuiltin;
      76             :     case CodeEventListener::CALLBACK_TAG:
      77          87 :       return CpuProfileNode::kCallback;
      78             :     case CodeEventListener::REG_EXP_TAG:
      79             :     case CodeEventListener::STUB_TAG:
      80             :     case CodeEventListener::CODE_CREATION_EVENT:
      81             :     case CodeEventListener::CODE_DISABLE_OPT_EVENT:
      82             :     case CodeEventListener::CODE_MOVE_EVENT:
      83             :     case CodeEventListener::CODE_DELETE_EVENT:
      84             :     case CodeEventListener::CODE_MOVING_GC:
      85             :     case CodeEventListener::SHARED_FUNC_MOVE_EVENT:
      86             :     case CodeEventListener::SNAPSHOT_CODE_NAME_EVENT:
      87             :     case CodeEventListener::TICK_EVENT:
      88             :     case CodeEventListener::NUMBER_OF_LOG_EVENTS:
      89          10 :       return CpuProfileNode::kInternal;
      90             :   }
      91           0 : }  // namespace internal
      92             : 
      93             : inline Isolate* ProfileNode::isolate() const { return tree_->isolate(); }
      94             : 
      95             : }  // namespace internal
      96             : }  // namespace v8
      97             : 
      98             : #endif  // V8_PROFILER_PROFILE_GENERATOR_INL_H_

Generated by: LCOV version 1.10