aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/log.h
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2013-07-30 17:14:55 +0200
committerBen Noordhuis <info@bnoordhuis.nl>2013-07-30 17:14:55 +0200
commit2fc47ab10bdbcfb39521d04cf5417520e0035163 (patch)
tree037359365f08c7ba1a7c3f3e5a4e8867b441553d /deps/v8/src/log.h
parentb8c04b921b626edd4201f805d0feb384c8e91ea7 (diff)
downloadandroid-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.h102
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