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