Chromium Code Reviews| Index: src/log.h |
| =================================================================== |
| --- src/log.h (revision 13212) |
| +++ src/log.h (working copy) |
| @@ -76,6 +76,7 @@ |
| class Semaphore; |
| class Ticker; |
| class Isolate; |
| +class JITCodeLineInfo; |
| #undef LOG |
| #define LOG(isolate, Call) \ |
| @@ -246,6 +247,15 @@ |
| void CodeMoveEvent(Address from, Address to); |
| // Emits a code delete event. |
| void CodeDeleteEvent(Address from); |
| + // Emits a code line info add event. |
| + void CodeLinePosInfoAddEvent(JITCodeLineInfo* lineinfostruct, |
| + int pc_offset, |
| + int position, |
| + bool is_statement); |
| + // Emits a code line info start to record event |
| + void CodeStartLinePosInfoRecordEvent(JITCodeLineInfo* lineinfo); |
| + // Emits a code line info finish record event |
|
danno
2012/12/20 16:27:20
Can you add comments about the memory management o
|
| + void CodeEndLinePosInfoRecordEvent(Code* code, void* lineinfostruct); |
| void SharedFunctionInfoMoveEvent(Address from, Address to); |
| @@ -358,10 +368,18 @@ |
| ~Logger(); |
| // Issue code notifications. |
| - void IssueCodeAddedEvent(Code* code, const char* name, size_t name_len); |
| + void IssueCodeAddedEvent(Code* code, |
| + Script* script, |
| + const char* name, |
| + size_t name_len); |
| void IssueCodeMovedEvent(Address from, Address to); |
| void IssueCodeRemovedEvent(Address from); |
| - |
| + void IssueAddCodeLinePosInfoEvent(JITCodeLineInfo* lineinfo, |
|
danno
2012/12/20 16:27:20
why not just line_info? Easier to read.
|
| + int pc_offset, |
| + int position, |
| + bool is_statement); |
| + void IssueStartCodePosInfoEvent(JITCodeLineInfo* lineinfo); |
|
danno
2012/12/20 16:27:20
why not just line_info? Easier to read.
|
| + void IssueEndCodePosInfoEvent(Code* code, void* lineinfostruct); |
|
danno
2012/12/20 16:27:20
why not just line_info? Easier to read.
|
| // Emits the profiler's first message. |
| void ProfilerBeginEvent(); |
| @@ -512,7 +530,35 @@ |
| DISALLOW_IMPLICIT_CONSTRUCTORS(SamplerRegistry); |
| }; |
| +// This class is used to record the JITted code position info for JIT |
| +// code profiling. |
| +class JITCodeLineInfo : public Malloced { |
| + public: |
| + JITCodeLineInfo() : line_num_info_(10) { } |
| + void SetPosition(intptr_t pc, int pos, bool is_statement) { |
| + AddCodeLineInfo(LineNumInfo(pc, pos, is_statement)); |
| + } |
| + |
| + struct LineNumInfo { |
| + LineNumInfo(intptr_t pc, int pos, bool is_statement) |
| + : pc_(pc), pos_(pos), is_statement_(is_statement) { } |
|
danno
2012/12/20 16:27:20
nit: whitespace formatting needs to be according t
|
| + |
| + intptr_t pc_; |
| + int pos_; |
| + bool is_statement_; |
| + }; |
| + |
| + List<LineNumInfo>* line_numinfo() { |
| + return &line_num_info_; |
| + } |
| + |
| + private: |
| + void AddCodeLineInfo(const LineNumInfo& line_info) { |
| + line_num_info_.Add(line_info); |
| + } |
| + List<LineNumInfo> line_num_info_; |
| +}; |
| // Class that extracts stack trace, used for profiling. |
| class StackTracer : public AllStatic { |
| public: |