Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Unified Diff: src/log-utils.h

Issue 435003: Patch for allowing several V8 instances in process:... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/log-inl.h ('k') | src/log-utils.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/log-utils.h
===================================================================
--- src/log-utils.h (revision 3427)
+++ src/log-utils.h (working copy)
@@ -87,7 +87,49 @@
bool is_sealed_;
};
+class LogData {
+ // Whether logging is stopped (e.g. due to insufficient resources).
+ bool is_stopped_;
+ // When logging is active, either output_handle_ or output_buffer_ is used
+ // to store a pointer to log destination. If logging was opened via OpenStdout
+ // or OpenFile, then output_handle_ is used. If logging was opened
+ // via OpenMemoryBuffer, then output_buffer_ is used.
+ // mutex_ should be acquired before using output_handle_ or output_buffer_.
+ FILE* output_handle_;
+
+ LogDynamicBuffer* output_buffer_;
+
+ // mutex_ is a Mutex used for enforcing exclusive
+ // access to the formatting buffer and the log file or log memory buffer.
+ Mutex* mutex_;
+
+ // Buffer used for formatting log messages. This is a singleton buffer and
+ // mutex_ should be acquired before using it.
+ char* message_buffer_;
+
+ typedef int (*WritePtr)(const char* msg, int length);
+ // Write functions assume that mutex_ is acquired by the caller.
+ WritePtr Write;
+
+ // A handler that is called when Log::Write fails.
+ typedef void (*WriteFailureHandler)();
+
+ WriteFailureHandler write_failure_handler;
+
+ void set_write_failure_handler(WriteFailureHandler handler) {
+ write_failure_handler = handler;
+ }
+
+ friend class V8Context;
+ friend class Log;
+ friend class Logger;
+ friend class LogMessageBuilder;
+
+ LogData();
+ DISALLOW_COPY_AND_ASSIGN(LogData);
+};
+
// Functions and data for performing output of log messages.
class Log : public AllStatic {
public:
@@ -101,7 +143,9 @@
static void OpenMemoryBuffer();
// Disables logging, but preserves acquired resources.
- static void stop() { is_stopped_ = true; }
+ static void stop() {
+ v8_context()->log_data_.is_stopped_ = true;
+ }
// Frees all resources acquired in Open... functions.
static void Close();
@@ -111,25 +155,23 @@
// Returns whether logging is enabled.
static bool IsEnabled() {
- return !is_stopped_ && (output_handle_ != NULL || output_buffer_ != NULL);
+ LogData& log_data = v8_context()->log_data_;
+ return !log_data.is_stopped_ &&
+ (log_data.output_handle_ != NULL || log_data.output_buffer_ != NULL);
}
// Size of buffer used for formatting log messages.
static const int kMessageBufferSize = 2048;
private:
- typedef int (*WritePtr)(const char* msg, int length);
-
// Initialization function called from Open... functions.
static void Init();
- // Write functions assume that mutex_ is acquired by the caller.
- static WritePtr Write;
-
// Implementation of writing to a log file.
static int WriteToFile(const char* msg, int length) {
- ASSERT(output_handle_ != NULL);
- size_t rv = fwrite(msg, 1, length, output_handle_);
+ LogData& log_data = v8_context()->log_data_;
+ ASSERT(log_data.output_handle_ != NULL);
+ size_t rv = fwrite(msg, 1, length, log_data.output_handle_);
ASSERT(static_cast<size_t>(length) == rv);
USE(rv);
return length;
@@ -137,39 +179,20 @@
// Implementation of writing to a memory buffer.
static int WriteToMemory(const char* msg, int length) {
- ASSERT(output_buffer_ != NULL);
- return output_buffer_->Write(msg, length);
+ LogData& log_data = v8_context()->log_data_;
+ ASSERT(log_data.output_buffer_ != NULL);
+ return log_data.output_buffer_->Write(msg, length);
}
- // Whether logging is stopped (e.g. due to insufficient resources).
- static bool is_stopped_;
-
- // When logging is active, either output_handle_ or output_buffer_ is used
- // to store a pointer to log destination. If logging was opened via OpenStdout
- // or OpenFile, then output_handle_ is used. If logging was opened
- // via OpenMemoryBuffer, then output_buffer_ is used.
- // mutex_ should be acquired before using output_handle_ or output_buffer_.
- static FILE* output_handle_;
-
- static LogDynamicBuffer* output_buffer_;
-
- // Size of dynamic buffer block (and dynamic buffer initial size).
+// Size of dynamic buffer block (and dynamic buffer initial size).
static const int kDynamicBufferBlockSize = 65536;
// Maximum size of dynamic buffer.
static const int kMaxDynamicBufferSize = 50 * 1024 * 1024;
// Message to "seal" dynamic buffer with.
- static const char* kDynamicBufferSeal;
+ static const char kDynamicBufferSeal[];
- // mutex_ is a Mutex used for enforcing exclusive
- // access to the formatting buffer and the log file or log memory buffer.
- static Mutex* mutex_;
-
- // Buffer used for formatting log messages. This is a singleton buffer and
- // mutex_ should be acquired before using it.
- static char* message_buffer_;
-
friend class LogMessageBuilder;
friend class LogRecordCompressor;
};
@@ -271,16 +294,8 @@
// Write a null-terminated string to to the log file currently opened.
void WriteCStringToLogFile(const char* str);
- // A handler that is called when Log::Write fails.
- typedef void (*WriteFailureHandler)();
-
- static void set_write_failure_handler(WriteFailureHandler handler) {
- write_failure_handler = handler;
- }
-
private:
- static WriteFailureHandler write_failure_handler;
-
+ LogData& log_data_;
ScopedLock sl;
int pos_;
};
« no previous file with comments | « src/log-inl.h ('k') | src/log-utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698