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: |