Chromium Code Reviews| Index: src/log.h |
| =================================================================== |
| --- src/log.h (revision 13276) |
| +++ 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,16 @@ |
| 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* line_info, |
| + int pc_offset, |
| + int position, |
| + bool is_statement); |
| + // Emits a code line info start to record event |
| + void CodeStartLinePosInfoRecordEvent(JITCodeLineInfo* line_info); |
| + // Emits a code line info finish record event. |
| + // It's the callee's responsibility to dispose the parameter line_info data. |
| + void CodeEndLinePosInfoRecordEvent(Code* code, JITCodeLineInfo* line_info); |
| void SharedFunctionInfoMoveEvent(Address from, Address to); |
| @@ -315,6 +326,10 @@ |
| return logging_nesting_ > 0; |
| } |
| + bool is_code_event_handler_enabled() { |
| + return code_event_handler_ != NULL; |
| + } |
| + |
| bool is_logging_code_events() { |
| return is_logging() || code_event_handler_ != NULL; |
| } |
| @@ -358,10 +373,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* line_info, |
| + int pc_offset, |
| + int position, |
| + bool is_statement); |
| + void IssueStartCodePosInfoEvent(JITCodeLineInfo* line_info); |
| + void IssueEndCodePosInfoEvent(Code* code, JITCodeLineInfo* line_info); |
| // Emits the profiler's first message. |
| void ProfilerBeginEvent(); |
| @@ -512,7 +535,35 @@ |
| DISALLOW_IMPLICIT_CONSTRUCTORS(SamplerRegistry); |
| }; |
|
danno
2013/01/10 16:47:33
nit: Google style guide, 2 lines of whitespace bet
|
| +// This class is used to record the JITted code position info for JIT |
| +// code profiling. |
| +class JITCodeLineInfo : public Malloced { |
|
danno
2013/01/10 16:47:33
As mentioned in the comments for assembler.h, this
chunyang.dai
2013/01/18 10:22:44
I defined this class here in previous patch set be
|
| + 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) { } |
| + |
| + 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_; |
| +}; |
|
danno
2013/01/10 16:47:33
nit: Google style guide, 2 lines of whitespace bet
|
| // Class that extracts stack trace, used for profiling. |
| class StackTracer : public AllStatic { |
| public: |