Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: src/profiler/profile-generator.h

Issue 2061623002: Introduce JIT code events dispatcher for the isolate. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebaseline Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/profiler/cpu-profiler.cc ('k') | src/profiler/profile-generator.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_PROFILER_PROFILE_GENERATOR_H_ 5 #ifndef V8_PROFILER_PROFILE_GENERATOR_H_
6 #define V8_PROFILER_PROFILE_GENERATOR_H_ 6 #define V8_PROFILER_PROFILE_GENERATOR_H_
7 7
8 #include <map> 8 #include <map>
9 #include "include/v8-profiler.h" 9 #include "include/v8-profiler.h"
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 20 matching lines...) Expand all
31 // pc_offset -> source line 31 // pc_offset -> source line
32 typedef std::map<int, int> PcOffsetMap; 32 typedef std::map<int, int> PcOffsetMap;
33 PcOffsetMap pc_offset_map_; 33 PcOffsetMap pc_offset_map_;
34 DISALLOW_COPY_AND_ASSIGN(JITLineInfoTable); 34 DISALLOW_COPY_AND_ASSIGN(JITLineInfoTable);
35 }; 35 };
36 36
37 37
38 class CodeEntry { 38 class CodeEntry {
39 public: 39 public:
40 // CodeEntry doesn't own name strings, just references them. 40 // CodeEntry doesn't own name strings, just references them.
41 inline CodeEntry(Logger::LogEventsAndTags tag, const char* name, 41 inline CodeEntry(CodeEventListener::LogEventsAndTags tag, const char* name,
42 const char* name_prefix = CodeEntry::kEmptyNamePrefix, 42 const char* name_prefix = CodeEntry::kEmptyNamePrefix,
43 const char* resource_name = CodeEntry::kEmptyResourceName, 43 const char* resource_name = CodeEntry::kEmptyResourceName,
44 int line_number = v8::CpuProfileNode::kNoLineNumberInfo, 44 int line_number = v8::CpuProfileNode::kNoLineNumberInfo,
45 int column_number = v8::CpuProfileNode::kNoColumnNumberInfo, 45 int column_number = v8::CpuProfileNode::kNoColumnNumberInfo,
46 JITLineInfoTable* line_info = NULL, 46 JITLineInfoTable* line_info = NULL,
47 Address instruction_start = NULL); 47 Address instruction_start = NULL);
48 ~CodeEntry(); 48 ~CodeEntry();
49 49
50 // Container describing inlined frames at eager deopt points. Is eventually 50 // Container describing inlined frames at eager deopt points. Is eventually
51 // being translated into v8::CpuProfileDeoptFrame by the profiler. 51 // being translated into v8::CpuProfileDeoptFrame by the profiler.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 98
99 int GetSourceLine(int pc_offset) const; 99 int GetSourceLine(int pc_offset) const;
100 100
101 void AddInlineStack(int pc_offset, std::vector<CodeEntry*>& inline_stack); 101 void AddInlineStack(int pc_offset, std::vector<CodeEntry*>& inline_stack);
102 const std::vector<CodeEntry*>* GetInlineStack(int pc_offset) const; 102 const std::vector<CodeEntry*>* GetInlineStack(int pc_offset) const;
103 103
104 void AddDeoptInlinedFrames(int deopt_id, std::vector<DeoptInlinedFrame>&); 104 void AddDeoptInlinedFrames(int deopt_id, std::vector<DeoptInlinedFrame>&);
105 bool HasDeoptInlinedFramesFor(int deopt_id) const; 105 bool HasDeoptInlinedFramesFor(int deopt_id) const;
106 106
107 Address instruction_start() const { return instruction_start_; } 107 Address instruction_start() const { return instruction_start_; }
108 Logger::LogEventsAndTags tag() const { return TagField::decode(bit_field_); } 108 CodeEventListener::LogEventsAndTags tag() const {
109 return TagField::decode(bit_field_);
110 }
109 111
110 static const char* const kEmptyNamePrefix; 112 static const char* const kEmptyNamePrefix;
111 static const char* const kEmptyResourceName; 113 static const char* const kEmptyResourceName;
112 static const char* const kEmptyBailoutReason; 114 static const char* const kEmptyBailoutReason;
113 static const char* const kNoDeoptReason; 115 static const char* const kNoDeoptReason;
114 116
115 private: 117 private:
116 class TagField : public BitField<Logger::LogEventsAndTags, 0, 8> {}; 118 class TagField : public BitField<Logger::LogEventsAndTags, 0, 8> {};
117 class BuiltinIdField : public BitField<Builtins::Name, 8, 24> {}; 119 class BuiltinIdField : public BitField<Builtins::Name, 8, 24> {};
118 120
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 const char* GetFunctionName(Name* name) { 306 const char* GetFunctionName(Name* name) {
305 return function_and_resource_names_.GetFunctionName(name); 307 return function_and_resource_names_.GetFunctionName(name);
306 } 308 }
307 const char* GetFunctionName(const char* name) { 309 const char* GetFunctionName(const char* name) {
308 return function_and_resource_names_.GetFunctionName(name); 310 return function_and_resource_names_.GetFunctionName(name);
309 } 311 }
310 bool IsLastProfile(const char* title); 312 bool IsLastProfile(const char* title);
311 void RemoveProfile(CpuProfile* profile); 313 void RemoveProfile(CpuProfile* profile);
312 314
313 CodeEntry* NewCodeEntry( 315 CodeEntry* NewCodeEntry(
314 Logger::LogEventsAndTags tag, const char* name, 316 CodeEventListener::LogEventsAndTags tag, const char* name,
315 const char* name_prefix = CodeEntry::kEmptyNamePrefix, 317 const char* name_prefix = CodeEntry::kEmptyNamePrefix,
316 const char* resource_name = CodeEntry::kEmptyResourceName, 318 const char* resource_name = CodeEntry::kEmptyResourceName,
317 int line_number = v8::CpuProfileNode::kNoLineNumberInfo, 319 int line_number = v8::CpuProfileNode::kNoLineNumberInfo,
318 int column_number = v8::CpuProfileNode::kNoColumnNumberInfo, 320 int column_number = v8::CpuProfileNode::kNoColumnNumberInfo,
319 JITLineInfoTable* line_info = NULL, Address instruction_start = NULL); 321 JITLineInfoTable* line_info = NULL, Address instruction_start = NULL);
320 322
321 // Called from profile generator thread. 323 // Called from profile generator thread.
322 void AddPathToCurrentProfiles(base::TimeTicks timestamp, 324 void AddPathToCurrentProfiles(base::TimeTicks timestamp,
323 const std::vector<CodeEntry*>& path, 325 const std::vector<CodeEntry*>& path,
324 int src_line, bool update_stats); 326 int src_line, bool update_stats);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 CodeEntry* unresolved_entry_; 369 CodeEntry* unresolved_entry_;
368 370
369 DISALLOW_COPY_AND_ASSIGN(ProfileGenerator); 371 DISALLOW_COPY_AND_ASSIGN(ProfileGenerator);
370 }; 372 };
371 373
372 374
373 } // namespace internal 375 } // namespace internal
374 } // namespace v8 376 } // namespace v8
375 377
376 #endif // V8_PROFILER_PROFILE_GENERATOR_H_ 378 #endif // V8_PROFILER_PROFILE_GENERATOR_H_
OLDNEW
« no previous file with comments | « src/profiler/cpu-profiler.cc ('k') | src/profiler/profile-generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698