LCOV - code coverage report
Current view: top level - src/profiler - profiler-listener.h (source / functions) Hit Total Coverage
Test: app.info Lines: 9 10 90.0 %
Date: 2019-04-18 Functions: 3 4 75.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_PROFILER_PROFILER_LISTENER_H_
       6             : #define V8_PROFILER_PROFILER_LISTENER_H_
       7             : 
       8             : #include <memory>
       9             : #include <vector>
      10             : 
      11             : #include "src/code-events.h"
      12             : #include "src/profiler/profile-generator.h"
      13             : 
      14             : namespace v8 {
      15             : namespace internal {
      16             : 
      17             : class CodeEventsContainer;
      18             : class CodeDeoptEventRecord;
      19             : 
      20         812 : class CodeEventObserver {
      21             :  public:
      22             :   virtual void CodeEventHandler(const CodeEventsContainer& evt_rec) = 0;
      23         807 :   virtual ~CodeEventObserver() = default;
      24             : };
      25             : 
      26        1574 : class V8_EXPORT_PRIVATE ProfilerListener : public CodeEventListener {
      27             :  public:
      28             :   ProfilerListener(Isolate*, CodeEventObserver*);
      29             :   ~ProfilerListener() override;
      30             : 
      31             :   void CallbackEvent(Name name, Address entry_point) override;
      32             :   void CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
      33             :                        AbstractCode code, const char* comment) override;
      34             :   void CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
      35             :                        AbstractCode code, Name name) override;
      36             :   void CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
      37             :                        AbstractCode code, SharedFunctionInfo shared,
      38             :                        Name script_name) override;
      39             :   void CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
      40             :                        AbstractCode code, SharedFunctionInfo shared,
      41             :                        Name script_name, int line, int column) override;
      42             :   void CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
      43             :                        const wasm::WasmCode* code,
      44             :                        wasm::WasmName name) override;
      45             : 
      46         223 :   void CodeMovingGCEvent() override {}
      47             :   void CodeMoveEvent(AbstractCode from, AbstractCode to) override;
      48             :   void CodeDisableOptEvent(AbstractCode code,
      49             :                            SharedFunctionInfo shared) override;
      50             :   void CodeDeoptEvent(Code code, DeoptimizeKind kind, Address pc,
      51             :                       int fp_to_sp_delta) override;
      52             :   void GetterCallbackEvent(Name name, Address entry_point) override;
      53             :   void RegExpCodeCreateEvent(AbstractCode code, String source) override;
      54             :   void SetterCallbackEvent(Name name, Address entry_point) override;
      55           0 :   void SharedFunctionInfoMoveEvent(Address from, Address to) override {}
      56             : 
      57             :   const char* GetName(Name name) {
      58     1223542 :     return function_and_resource_names_.GetName(name);
      59             :   }
      60             :   const char* GetName(int args_count) {
      61             :     return function_and_resource_names_.GetName(args_count);
      62             :   }
      63             :   const char* GetName(const char* name) {
      64       26244 :     return function_and_resource_names_.GetCopy(name);
      65             :   }
      66             :   const char* GetConsName(const char* prefix, Name name) {
      67       18226 :     return function_and_resource_names_.GetConsName(prefix, name);
      68             :   }
      69             : 
      70          15 :   void set_observer(CodeEventObserver* observer) { observer_ = observer; }
      71             : 
      72             :  private:
      73             :   void AttachDeoptInlinedFrames(Code code, CodeDeoptEventRecord* rec);
      74             :   Name InferScriptName(Name name, SharedFunctionInfo info);
      75             :   V8_INLINE void DispatchCodeEvent(const CodeEventsContainer& evt_rec) {
      76      663972 :     observer_->CodeEventHandler(evt_rec);
      77             :   }
      78             : 
      79             :   Isolate* isolate_;
      80             :   CodeEventObserver* observer_;
      81             :   StringsStorage function_and_resource_names_;
      82             : 
      83             :   DISALLOW_COPY_AND_ASSIGN(ProfilerListener);
      84             : };
      85             : 
      86             : }  // namespace internal
      87             : }  // namespace v8
      88             : 
      89             : #endif  // V8_PROFILER_PROFILER_LISTENER_H_

Generated by: LCOV version 1.10