diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2013-07-30 17:14:55 +0200 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2013-07-30 17:14:55 +0200 |
commit | 2fc47ab10bdbcfb39521d04cf5417520e0035163 (patch) | |
tree | 037359365f08c7ba1a7c3f3e5a4e8867b441553d /deps/v8/src/log.h | |
parent | b8c04b921b626edd4201f805d0feb384c8e91ea7 (diff) | |
download | android-node-v8-2fc47ab10bdbcfb39521d04cf5417520e0035163.tar.gz android-node-v8-2fc47ab10bdbcfb39521d04cf5417520e0035163.tar.bz2 android-node-v8-2fc47ab10bdbcfb39521d04cf5417520e0035163.zip |
v8: upgrade v8 to 3.20.11
Diffstat (limited to 'deps/v8/src/log.h')
-rw-r--r-- | deps/v8/src/log.h | 102 |
1 files changed, 88 insertions, 14 deletions
diff --git a/deps/v8/src/log.h b/deps/v8/src/log.h index 194ad9d015..24d83ef127 100644 --- a/deps/v8/src/log.h +++ b/deps/v8/src/log.h @@ -70,7 +70,7 @@ namespace internal { // tick profiler requires code events, so --prof implies --log-code. // Forward declarations. -class CodeAddressMap; +class CodeEventListener; class CompilationInfo; class CpuProfiler; class Isolate; @@ -155,7 +155,6 @@ class JitLogger; class LowLevelLogger; class Sampler; - class Logger { public: #define DECLARE_ENUM(enum_item, ignore) enum_item, @@ -226,6 +225,11 @@ class Logger { // ==== Events logged by --log-code. ==== + void addCodeEventListener(CodeEventListener* listener); + void removeCodeEventListener(CodeEventListener* listener); + bool hasCodeEventListener(CodeEventListener* listener); + + // Emits a code event for a callback function. void CallbackEvent(Name* name, Address entry_point); void GetterCallbackEvent(Name* name, Address entry_point); @@ -269,6 +273,7 @@ class Logger { void SharedFunctionInfoMoveEvent(Address from, Address to); + void CodeNameEvent(Address addr, int pos, const char* code_name); void SnapshotPositionEvent(Address addr, int pos); // ==== Events logged by --log-gc. ==== @@ -439,29 +444,98 @@ class Logger { Log* log_; LowLevelLogger* ll_logger_; JitLogger* jit_logger_; - CodeAddressMap* code_address_map_; + List<CodeEventListener*> listeners_; // Guards against multiple calls to TearDown() that can happen in some tests. // 'true' between SetUp() and TearDown(). bool is_initialized_; - // Support for 'incremental addresses' in compressed logs: - // LogMessageBuilder::AppendAddress(Address addr) - Address last_address_; - // Logger::TickEvent(...) - Address prev_sp_; - Address prev_function_; - // Logger::MoveEventInternal(...) - Address prev_to_; - // Logger::FunctionCreateEvent(...) - Address prev_code_; - int64_t epoch_; friend class CpuProfiler; }; +class CodeEventListener { + public: + virtual ~CodeEventListener() {} + + virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, + Code* code, + const char* comment) = 0; + virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, + Code* code, + Name* name) = 0; + virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, + Code* code, + SharedFunctionInfo* shared, + CompilationInfo* info, + Name* name) = 0; + virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, + Code* code, + SharedFunctionInfo* shared, + CompilationInfo* info, + Name* source, + int line) = 0; + virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, + Code* code, + int args_count) = 0; + virtual void CallbackEvent(Name* name, Address entry_point) = 0; + virtual void GetterCallbackEvent(Name* name, Address entry_point) = 0; + virtual void SetterCallbackEvent(Name* name, Address entry_point) = 0; + virtual void RegExpCodeCreateEvent(Code* code, String* source) = 0; + virtual void CodeMoveEvent(Address from, Address to) = 0; + virtual void CodeDeleteEvent(Address from) = 0; + virtual void SharedFunctionInfoMoveEvent(Address from, Address to) = 0; + virtual void CodeMovingGCEvent() = 0; +}; + + +class CodeEventLogger : public CodeEventListener { + public: + CodeEventLogger(); + virtual ~CodeEventLogger(); + + virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, + Code* code, + const char* comment); + virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, + Code* code, + Name* name); + virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, + Code* code, + int args_count); + virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, + Code* code, + SharedFunctionInfo* shared, + CompilationInfo* info, + Name* name); + virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, + Code* code, + SharedFunctionInfo* shared, + CompilationInfo* info, + Name* source, + int line); + virtual void RegExpCodeCreateEvent(Code* code, String* source); + + virtual void CallbackEvent(Name* name, Address entry_point) { } + virtual void GetterCallbackEvent(Name* name, Address entry_point) { } + virtual void SetterCallbackEvent(Name* name, Address entry_point) { } + virtual void SharedFunctionInfoMoveEvent(Address from, Address to) { } + virtual void CodeMovingGCEvent() { } + + private: + class NameBuffer; + + virtual void LogRecordedBuffer(Code* code, + SharedFunctionInfo* shared, + const char* name, + int length) = 0; + + NameBuffer* name_buffer_; +}; + + } } // namespace v8::internal |