Revision: 5034
Author: [email protected]
Date: Wed Jul  7 10:51:10 2010
Log: [Isolates] Removing more statics from Logger-related code.

Review URL: http://codereview.chromium.org/2829034
http://code.google.com/p/v8/source/detail?r=5034

Modified:
 /branches/experimental/isolates/src/log-utils.cc
 /branches/experimental/isolates/src/log.cc
 /branches/experimental/isolates/src/log.h

=======================================
--- /branches/experimental/isolates/src/log-utils.cc Fri Jun 25 11:24:19 2010 +++ /branches/experimental/isolates/src/log-utils.cc Wed Jul 7 10:51:10 2010
@@ -338,9 +338,8 @@


 void LogMessageBuilder::AppendAddress(Address addr) {
-  static Address last_address_ = NULL;
-  AppendAddress(addr, last_address_);
-  last_address_ = addr;
+  AppendAddress(addr, log_->logger_->last_address_);
+  log_->logger_->last_address_ = addr;
 }


=======================================
--- /branches/experimental/isolates/src/log.cc  Tue Jun 29 18:06:08 2010
+++ /branches/experimental/isolates/src/log.cc  Wed Jul  7 10:51:10 2010
@@ -331,7 +331,12 @@
     cpu_profiler_nesting_(0),
     heap_profiler_nesting_(0),
     log_(new Log(this)),
-    is_initialized_(false) {
+    is_initialized_(false),
+    last_address_(NULL),
+    prev_sp_(NULL),
+    prev_function_(NULL),
+    prev_to_(NULL),
+    prev_code_(NULL) {
 }

 #define DECLARE_LONG_EVENT(ignore1, long_name, ignore2) long_name,
@@ -882,14 +887,13 @@

 void Logger::FunctionCreateEvent(JSFunction* function) {
 #ifdef ENABLE_LOGGING_AND_PROFILING
-  static Address prev_code = NULL;
   if (!log_->IsEnabled() || !FLAG_log_code) return;
   LogMessageBuilder msg(this);
   msg.Append("%s,", log_events_[FUNCTION_CREATION_EVENT]);
   msg.AppendAddress(function->address());
   msg.Append(',');
-  msg.AppendAddress(function->code()->address(), prev_code);
-  prev_code = function->code()->address();
+  msg.AppendAddress(function->code()->address(), prev_code_);
+  prev_code_ = function->code()->address();
   if (FLAG_compress_log) {
     ASSERT(compression_helper_ != NULL);
     if (!compression_helper_->HandleMessage(&msg)) return;
@@ -918,7 +922,6 @@
 void Logger::MoveEventInternal(LogEventsAndTags event,
                                Address from,
                                Address to) {
-  static Address prev_to_ = NULL;
   if (!log_->IsEnabled() || !FLAG_log_code) return;
   LogMessageBuilder msg(this);
   msg.Append("%s,", log_events_[event]);
@@ -1044,25 +1047,25 @@
 #endif
 }

+// Event starts with comma, so we don't have it in the format string.
+static const char kEventText[] = "heap-js-ret-item,%s";
+// We take placeholder strings into account, but it's OK to be conservative.
+static const int kEventTextLen = sizeof(kEventText)/sizeof(kEventText[0]);

 void Logger::HeapSampleJSRetainersEvent(
     const char* constructor, const char* event) {
 #ifdef ENABLE_LOGGING_AND_PROFILING
   if (!log_->IsEnabled() || !FLAG_log_gc) return;
-  // Event starts with comma, so we don't have it in the format string.
-  static const char* event_text = "heap-js-ret-item,%s";
- // We take placeholder strings into account, but it's OK to be conservative.
-  static const int event_text_len = StrLength(event_text);
   const int cons_len = StrLength(constructor);
   const int event_len = StrLength(event);
   int pos = 0;
// Retainer lists can be long. We may need to split them into multiple events.
   do {
     LogMessageBuilder msg(this);
-    msg.Append(event_text, constructor);
+    msg.Append(kEventText, constructor);
     int to_write = event_len - pos;
-    if (to_write > Log::kMessageBufferSize - (cons_len + event_text_len)) {
- int cut_pos = pos + Log::kMessageBufferSize - (cons_len + event_text_len);
+    if (to_write > Log::kMessageBufferSize - (cons_len + kEventTextLen)) {
+ int cut_pos = pos + Log::kMessageBufferSize - (cons_len + kEventTextLen);
       ASSERT(cut_pos < event_len);
       while (cut_pos > pos && event[cut_pos] != ',') --cut_pos;
       if (event[cut_pos] != ',') {
@@ -1132,18 +1135,16 @@
 #ifdef ENABLE_LOGGING_AND_PROFILING
 void Logger::TickEvent(TickSample* sample, bool overflow) {
   if (!log_->IsEnabled() || !FLAG_prof) return;
-  static Address prev_sp = NULL;
-  static Address prev_function = NULL;
   LogMessageBuilder msg(this);
   msg.Append("%s,", log_events_[TICK_EVENT]);
   Address prev_addr = sample->pc;
   msg.AppendAddress(prev_addr);
   msg.Append(',');
-  msg.AppendAddress(sample->sp, prev_sp);
-  prev_sp = sample->sp;
+  msg.AppendAddress(sample->sp, prev_sp_);
+  prev_sp_ = sample->sp;
   msg.Append(',');
-  msg.AppendAddress(sample->function, prev_function);
-  prev_function = sample->function;
+  msg.AppendAddress(sample->function, prev_function_);
+  prev_function_ = sample->function;
   msg.Append(",%d", static_cast<int>(sample->state));
   if (overflow) {
     msg.Append(",overflow");
=======================================
--- /branches/experimental/isolates/src/log.h   Fri Jun 25 15:53:25 2010
+++ /branches/experimental/isolates/src/log.h   Wed Jul  7 10:51:10 2010
@@ -376,6 +376,17 @@
   // '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_;
+
   friend class CpuProfiler;
 #else
   bool is_logging() { return false; }

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to