Index: src/log.cc |
diff --git a/src/log.cc b/src/log.cc |
index f3a0e8d74ac9727a670f7c1a950121a661d23153..d9e304d606ce61a9289f1bb8f38f22d6426633dd 100644 |
--- a/src/log.cc |
+++ b/src/log.cc |
@@ -299,6 +299,7 @@ class LogMessageBuilder BASE_EMBEDDED { |
void AppendDetailed(String* str, bool show_impl_info); |
void WriteToLogFile(); |
+ void WriteCStringToLogFile(const char* str); |
private: |
ScopedLock sl; |
@@ -395,6 +396,14 @@ void LogMessageBuilder::WriteToLogFile() { |
ASSERT(rv == static_cast<size_t>(pos_)); |
USE(rv); |
} |
+ |
+// Write a null-terminated string to to the log file currently opened. |
+void LogMessageBuilder::WriteCStringToLogFile(const char* str) { |
+ size_t len = strlen(str); |
+ size_t rv = fwrite(str, 1, len, Logger::logfile_); |
+ ASSERT(rv == len); |
+ USE(rv); |
+} |
#endif |
@@ -417,8 +426,7 @@ void Logger::Preamble(const char* content) { |
#ifdef ENABLE_LOGGING_AND_PROFILING |
if (logfile_ == NULL || !FLAG_log_code) return; |
LogMessageBuilder msg; |
- msg.Append("%s", content); |
- msg.WriteToLogFile(); |
+ msg.WriteCStringToLogFile(content); |
#endif |
} |
@@ -758,6 +766,20 @@ void Logger::CodeCreateEvent(const char* tag, Code* code, int args_count) { |
} |
+void Logger::RegExpCodeCreateEvent(Code* code, String* source) { |
+#ifdef ENABLE_LOGGING_AND_PROFILING |
+ if (logfile_ == NULL || !FLAG_log_code) return; |
+ LogMessageBuilder msg; |
+ msg.Append("code-creation,%s,0x%x,%d,\"", "RegExp", |
+ reinterpret_cast<unsigned int>(code->address()), |
+ code->ExecutableSize()); |
+ msg.AppendDetailed(source, false); |
+ msg.Append("\"\n"); |
+ msg.WriteToLogFile(); |
+#endif |
+} |
+ |
+ |
void Logger::CodeAllocateEvent(Code* code, Assembler* assem) { |
#ifdef ENABLE_LOGGING_AND_PROFILING |
if (logfile_ == NULL || !FLAG_log_code) return; |
@@ -1010,9 +1032,9 @@ bool Logger::Setup() { |
} |
} |
SmartPointer<const char> expanded = stream.ToCString(); |
- logfile_ = OS::FOpen(*expanded, "w"); |
+ logfile_ = OS::FOpen(*expanded, OS::LogFileOpenMode); |
} else { |
- logfile_ = OS::FOpen(FLAG_logfile, "w"); |
+ logfile_ = OS::FOpen(FLAG_logfile, OS::LogFileOpenMode); |
} |
message_buffer_ = NewArray<char>(kMessageBufferSize); |
mutex_ = OS::CreateMutex(); |