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

Side by Side Diff: src/log-utils.cc

Issue 19768003: Logger: remove dependency between Logger and LogMessageBuilder. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: header removed Created 7 years, 5 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 message_buffer_ = NULL; 118 message_buffer_ = NULL;
119 119
120 delete mutex_; 120 delete mutex_;
121 mutex_ = NULL; 121 mutex_ = NULL;
122 122
123 is_stopped_ = false; 123 is_stopped_ = false;
124 return result; 124 return result;
125 } 125 }
126 126
127 127
128 LogMessageBuilder::LogMessageBuilder(Logger* logger) 128 Log::MessageBuilder::MessageBuilder(Log* log)
129 : log_(logger->log_), 129 : log_(log),
130 sl(log_->mutex_), 130 sl(log_->mutex_),
131 pos_(0) { 131 pos_(0) {
132 ASSERT(log_->message_buffer_ != NULL); 132 ASSERT(log_->message_buffer_ != NULL);
133 } 133 }
134 134
135 135
136 void LogMessageBuilder::Append(const char* format, ...) { 136 void Log::MessageBuilder::Append(const char* format, ...) {
137 Vector<char> buf(log_->message_buffer_ + pos_, 137 Vector<char> buf(log_->message_buffer_ + pos_,
138 Log::kMessageBufferSize - pos_); 138 Log::kMessageBufferSize - pos_);
139 va_list args; 139 va_list args;
140 va_start(args, format); 140 va_start(args, format);
141 AppendVA(format, args); 141 AppendVA(format, args);
142 va_end(args); 142 va_end(args);
143 ASSERT(pos_ <= Log::kMessageBufferSize); 143 ASSERT(pos_ <= Log::kMessageBufferSize);
144 } 144 }
145 145
146 146
147 void LogMessageBuilder::AppendVA(const char* format, va_list args) { 147 void Log::MessageBuilder::AppendVA(const char* format, va_list args) {
148 Vector<char> buf(log_->message_buffer_ + pos_, 148 Vector<char> buf(log_->message_buffer_ + pos_,
149 Log::kMessageBufferSize - pos_); 149 Log::kMessageBufferSize - pos_);
150 int result = v8::internal::OS::VSNPrintF(buf, format, args); 150 int result = v8::internal::OS::VSNPrintF(buf, format, args);
151 151
152 // Result is -1 if output was truncated. 152 // Result is -1 if output was truncated.
153 if (result >= 0) { 153 if (result >= 0) {
154 pos_ += result; 154 pos_ += result;
155 } else { 155 } else {
156 pos_ = Log::kMessageBufferSize; 156 pos_ = Log::kMessageBufferSize;
157 } 157 }
158 ASSERT(pos_ <= Log::kMessageBufferSize); 158 ASSERT(pos_ <= Log::kMessageBufferSize);
159 } 159 }
160 160
161 161
162 void LogMessageBuilder::Append(const char c) { 162 void Log::MessageBuilder::Append(const char c) {
163 if (pos_ < Log::kMessageBufferSize) { 163 if (pos_ < Log::kMessageBufferSize) {
164 log_->message_buffer_[pos_++] = c; 164 log_->message_buffer_[pos_++] = c;
165 } 165 }
166 ASSERT(pos_ <= Log::kMessageBufferSize); 166 ASSERT(pos_ <= Log::kMessageBufferSize);
167 } 167 }
168 168
169 169
170 void LogMessageBuilder::AppendDoubleQuotedString(const char* string) { 170 void Log::MessageBuilder::AppendDoubleQuotedString(const char* string) {
171 Append('"'); 171 Append('"');
172 for (const char* p = string; *p != '\0'; p++) { 172 for (const char* p = string; *p != '\0'; p++) {
173 if (*p == '"') { 173 if (*p == '"') {
174 Append('\\'); 174 Append('\\');
175 } 175 }
176 Append(*p); 176 Append(*p);
177 } 177 }
178 Append('"'); 178 Append('"');
179 } 179 }
180 180
181 181
182 void LogMessageBuilder::Append(String* str) { 182 void Log::MessageBuilder::Append(String* str) {
183 DisallowHeapAllocation no_gc; // Ensure string stay valid. 183 DisallowHeapAllocation no_gc; // Ensure string stay valid.
184 int length = str->length(); 184 int length = str->length();
185 for (int i = 0; i < length; i++) { 185 for (int i = 0; i < length; i++) {
186 Append(static_cast<char>(str->Get(i))); 186 Append(static_cast<char>(str->Get(i)));
187 } 187 }
188 } 188 }
189 189
190 190
191 void LogMessageBuilder::AppendAddress(Address addr) { 191 void Log::MessageBuilder::AppendAddress(Address addr) {
192 Append("0x%" V8PRIxPTR, addr); 192 Append("0x%" V8PRIxPTR, addr);
193 } 193 }
194 194
195 195
196 void LogMessageBuilder::AppendDetailed(String* str, bool show_impl_info) { 196 void Log::MessageBuilder::AppendSymbolName(Symbol* symbol) {
197 ASSERT(symbol);
198 Append("symbol(");
199 if (!symbol->name()->IsUndefined()) {
200 Append("\"");
201 AppendDetailed(String::cast(symbol->name()), false);
202 Append("\" ");
203 }
204 Append("hash %x)", symbol->Hash());
205 }
206
207
208 void Log::MessageBuilder::AppendDetailed(String* str, bool show_impl_info) {
197 if (str == NULL) return; 209 if (str == NULL) return;
198 DisallowHeapAllocation no_gc; // Ensure string stay valid. 210 DisallowHeapAllocation no_gc; // Ensure string stay valid.
199 int len = str->length(); 211 int len = str->length();
200 if (len > 0x1000) 212 if (len > 0x1000)
201 len = 0x1000; 213 len = 0x1000;
202 if (show_impl_info) { 214 if (show_impl_info) {
203 Append(str->IsOneByteRepresentation() ? 'a' : '2'); 215 Append(str->IsOneByteRepresentation() ? 'a' : '2');
204 if (StringShape(str).IsExternal()) 216 if (StringShape(str).IsExternal())
205 Append('e'); 217 Append('e');
206 if (StringShape(str).IsInternalized()) 218 if (StringShape(str).IsInternalized())
(...skipping 12 matching lines...) Expand all
219 Append("\\\\"); 231 Append("\\\\");
220 } else if (c == '\"') { 232 } else if (c == '\"') {
221 Append("\"\""); 233 Append("\"\"");
222 } else { 234 } else {
223 Append("%lc", c); 235 Append("%lc", c);
224 } 236 }
225 } 237 }
226 } 238 }
227 239
228 240
229 void LogMessageBuilder::AppendStringPart(const char* str, int len) { 241 void Log::MessageBuilder::AppendStringPart(const char* str, int len) {
230 if (pos_ + len > Log::kMessageBufferSize) { 242 if (pos_ + len > Log::kMessageBufferSize) {
231 len = Log::kMessageBufferSize - pos_; 243 len = Log::kMessageBufferSize - pos_;
232 ASSERT(len >= 0); 244 ASSERT(len >= 0);
233 if (len == 0) return; 245 if (len == 0) return;
234 } 246 }
235 Vector<char> buf(log_->message_buffer_ + pos_, 247 Vector<char> buf(log_->message_buffer_ + pos_,
236 Log::kMessageBufferSize - pos_); 248 Log::kMessageBufferSize - pos_);
237 OS::StrNCpy(buf, str, len); 249 OS::StrNCpy(buf, str, len);
238 pos_ += len; 250 pos_ += len;
239 ASSERT(pos_ <= Log::kMessageBufferSize); 251 ASSERT(pos_ <= Log::kMessageBufferSize);
240 } 252 }
241 253
242 254
243 void LogMessageBuilder::WriteToLogFile() { 255 void Log::MessageBuilder::WriteToLogFile() {
244 ASSERT(pos_ <= Log::kMessageBufferSize); 256 ASSERT(pos_ <= Log::kMessageBufferSize);
245 const int written = log_->WriteToFile(log_->message_buffer_, pos_); 257 const int written = log_->WriteToFile(log_->message_buffer_, pos_);
246 if (written != pos_) { 258 if (written != pos_) {
247 log_->stop(); 259 log_->stop();
248 log_->logger_->LogFailure(); 260 log_->logger_->LogFailure();
249 } 261 }
250 } 262 }
251 263
252 264
253 } } // namespace v8::internal 265 } } // namespace v8::internal
OLDNEW
« src/log.cc ('K') | « src/log-utils.h ('k') | test/cctest/test-log.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698