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

Side by Side Diff: src/cpu-profiler.h

Issue 910773002: Propagate Deopt reason to cpu-profiler (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: comments addressed Created 5 years, 10 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/arm64/lithium-codegen-arm64.cc ('k') | src/cpu-profiler.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_CPU_PROFILER_H_ 5 #ifndef V8_CPU_PROFILER_H_
6 #define V8_CPU_PROFILER_H_ 6 #define V8_CPU_PROFILER_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/base/atomicops.h" 9 #include "src/base/atomicops.h"
10 #include "src/base/platform/time.h" 10 #include "src/base/platform/time.h"
11 #include "src/circular-queue.h" 11 #include "src/circular-queue.h"
12 #include "src/sampler.h" 12 #include "src/sampler.h"
13 #include "src/unbound-queue.h" 13 #include "src/unbound-queue.h"
14 14
15 namespace v8 { 15 namespace v8 {
16 namespace internal { 16 namespace internal {
17 17
18 // Forward declarations. 18 // Forward declarations.
19 class CodeEntry; 19 class CodeEntry;
20 class CodeMap; 20 class CodeMap;
21 class CompilationInfo; 21 class CompilationInfo;
22 class CpuProfile; 22 class CpuProfile;
23 class CpuProfilesCollection; 23 class CpuProfilesCollection;
24 class ProfileGenerator; 24 class ProfileGenerator;
25 25
26 #define CODE_EVENTS_TYPE_LIST(V) \ 26 #define CODE_EVENTS_TYPE_LIST(V) \
27 V(CODE_CREATION, CodeCreateEventRecord) \ 27 V(CODE_CREATION, CodeCreateEventRecord) \
28 V(CODE_MOVE, CodeMoveEventRecord) \ 28 V(CODE_MOVE, CodeMoveEventRecord) \
29 V(CODE_DISABLE_OPT, CodeDisableOptEventRecord) \ 29 V(CODE_DISABLE_OPT, CodeDisableOptEventRecord) \
30 V(SHARED_FUNC_MOVE, SharedFunctionInfoMoveEventRecord) \ 30 V(CODE_DEOPT, CodeDeoptEventRecord) \
31 V(REPORT_BUILTIN, ReportBuiltinEventRecord) 31 V(SHARED_FUNC_MOVE, SharedFunctionInfoMoveEventRecord) \
32 V(REPORT_BUILTIN, ReportBuiltinEventRecord)
32 33
33 34
34 class CodeEventRecord { 35 class CodeEventRecord {
35 public: 36 public:
36 #define DECLARE_TYPE(type, ignore) type, 37 #define DECLARE_TYPE(type, ignore) type,
37 enum Type { 38 enum Type {
38 NONE = 0, 39 NONE = 0,
39 CODE_EVENTS_TYPE_LIST(DECLARE_TYPE) 40 CODE_EVENTS_TYPE_LIST(DECLARE_TYPE)
40 NUMBER_OF_TYPES 41 NUMBER_OF_TYPES
41 }; 42 };
(...skipping 26 matching lines...) Expand all
68 69
69 class CodeDisableOptEventRecord : public CodeEventRecord { 70 class CodeDisableOptEventRecord : public CodeEventRecord {
70 public: 71 public:
71 Address start; 72 Address start;
72 const char* bailout_reason; 73 const char* bailout_reason;
73 74
74 INLINE(void UpdateCodeMap(CodeMap* code_map)); 75 INLINE(void UpdateCodeMap(CodeMap* code_map));
75 }; 76 };
76 77
77 78
79 class CodeDeoptEventRecord : public CodeEventRecord {
80 public:
81 Address start;
82 const char* deopt_reason;
83 int raw_position;
84
85 INLINE(void UpdateCodeMap(CodeMap* code_map));
86 };
87
88
78 class SharedFunctionInfoMoveEventRecord : public CodeEventRecord { 89 class SharedFunctionInfoMoveEventRecord : public CodeEventRecord {
79 public: 90 public:
80 Address from; 91 Address from;
81 Address to; 92 Address to;
82 93
83 INLINE(void UpdateCodeMap(CodeMap* code_map)); 94 INLINE(void UpdateCodeMap(CodeMap* code_map));
84 }; 95 };
85 96
86 97
87 class ReportBuiltinEventRecord : public CodeEventRecord { 98 class ReportBuiltinEventRecord : public CodeEventRecord {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 virtual ~ProfilerEventsProcessor() {} 141 virtual ~ProfilerEventsProcessor() {}
131 142
132 // Thread control. 143 // Thread control.
133 virtual void Run(); 144 virtual void Run();
134 void StopSynchronously(); 145 void StopSynchronously();
135 INLINE(bool running()) { return !!base::NoBarrier_Load(&running_); } 146 INLINE(bool running()) { return !!base::NoBarrier_Load(&running_); }
136 void Enqueue(const CodeEventsContainer& event); 147 void Enqueue(const CodeEventsContainer& event);
137 148
138 // Puts current stack into tick sample events buffer. 149 // Puts current stack into tick sample events buffer.
139 void AddCurrentStack(Isolate* isolate); 150 void AddCurrentStack(Isolate* isolate);
151 void AddDeoptStack(Isolate* isolate, Address from, int fp_to_sp_delta);
140 152
141 // Tick sample events are filled directly in the buffer of the circular 153 // Tick sample events are filled directly in the buffer of the circular
142 // queue (because the structure is of fixed width, but usually not all 154 // queue (because the structure is of fixed width, but usually not all
143 // stack frame entries are filled.) This method returns a pointer to the 155 // stack frame entries are filled.) This method returns a pointer to the
144 // next record of the buffer. 156 // next record of the buffer.
145 inline TickSample* StartTickSample(); 157 inline TickSample* StartTickSample();
146 inline void FinishTickSample(); 158 inline void FinishTickSample();
147 159
148 // SamplingCircularQueue has stricter alignment requirements than a normal new 160 // SamplingCircularQueue has stricter alignment requirements than a normal new
149 // can fulfil, so we need to provide our own new/delete here. 161 // can fulfil, so we need to provide our own new/delete here.
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 CompilationInfo* info, Name* script_name); 238 CompilationInfo* info, Name* script_name);
227 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, Code* code, 239 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, Code* code,
228 SharedFunctionInfo* shared, 240 SharedFunctionInfo* shared,
229 CompilationInfo* info, Name* script_name, 241 CompilationInfo* info, Name* script_name,
230 int line, int column); 242 int line, int column);
231 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, 243 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag,
232 Code* code, int args_count); 244 Code* code, int args_count);
233 virtual void CodeMovingGCEvent() {} 245 virtual void CodeMovingGCEvent() {}
234 virtual void CodeMoveEvent(Address from, Address to); 246 virtual void CodeMoveEvent(Address from, Address to);
235 virtual void CodeDisableOptEvent(Code* code, SharedFunctionInfo* shared); 247 virtual void CodeDisableOptEvent(Code* code, SharedFunctionInfo* shared);
248 virtual void CodeDeoptEvent(Code* code, int bailout_id, Address pc,
249 int fp_to_sp_delta);
236 virtual void CodeDeleteEvent(Address from); 250 virtual void CodeDeleteEvent(Address from);
237 virtual void GetterCallbackEvent(Name* name, Address entry_point); 251 virtual void GetterCallbackEvent(Name* name, Address entry_point);
238 virtual void RegExpCodeCreateEvent(Code* code, String* source); 252 virtual void RegExpCodeCreateEvent(Code* code, String* source);
239 virtual void SetterCallbackEvent(Name* name, Address entry_point); 253 virtual void SetterCallbackEvent(Name* name, Address entry_point);
240 virtual void SharedFunctionInfoMoveEvent(Address from, Address to); 254 virtual void SharedFunctionInfoMoveEvent(Address from, Address to);
241 255
242 INLINE(bool is_profiling() const) { return is_profiling_; } 256 INLINE(bool is_profiling() const) { return is_profiling_; }
243 bool* is_profiling_address() { 257 bool* is_profiling_address() {
244 return &is_profiling_; 258 return &is_profiling_;
245 } 259 }
(...skipping 17 matching lines...) Expand all
263 bool saved_is_logging_; 277 bool saved_is_logging_;
264 bool is_profiling_; 278 bool is_profiling_;
265 279
266 DISALLOW_COPY_AND_ASSIGN(CpuProfiler); 280 DISALLOW_COPY_AND_ASSIGN(CpuProfiler);
267 }; 281 };
268 282
269 } } // namespace v8::internal 283 } } // namespace v8::internal
270 284
271 285
272 #endif // V8_CPU_PROFILER_H_ 286 #endif // V8_CPU_PROFILER_H_
OLDNEW
« no previous file with comments | « src/arm64/lithium-codegen-arm64.cc ('k') | src/cpu-profiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698