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

Side by Side Diff: third_party/WebKit/Source/wtf/Assertions.cpp

Issue 1840693002: Restore ScopedLogger and add documentation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved.
3 * Copyright (C) 2007-2009 Torch Mobile, Inc. 3 * Copyright (C) 2007-2009 Torch Mobile, Inc.
4 * Copyright (C) 2011 University of Szeged. All rights reserved. 4 * Copyright (C) 2011 University of Szeged. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 #endif 224 #endif
225 } 225 }
226 226
227 FrameToNameScope::~FrameToNameScope() 227 FrameToNameScope::~FrameToNameScope()
228 { 228 {
229 free(m_cxaDemangled); 229 free(m_cxaDemangled);
230 } 230 }
231 231
232 } // anonymous namespace 232 } // anonymous namespace
233 233
234 static const char kScopedLoggerIndent[] = " ";
esprehn 2016/03/28 23:16:48 can we just add a method called printIndent() that
skobes 2016/03/29 18:23:40 Done.
235
236 ScopedLogger::ScopedLogger(bool condition, const char* format, ...)
tkent 2016/03/28 23:16:30 The code should be wrapped with |namespace WTF|.
skobes 2016/03/29 18:23:40 Done.
237 : m_parent(condition ? current() : 0)
238 , m_multiline(false)
239 {
240 if (!condition)
241 return;
242
243 va_list args;
244 va_start(args, format);
245 init(format, args);
246 va_end(args);
247 }
248
249 ScopedLogger::~ScopedLogger()
250 {
251 if (current() == this) {
252 if (m_multiline)
253 indent();
254 else
255 print(" ");
256 print(")\n");
257 current() = m_parent;
258 }
259 }
260
261 void ScopedLogger::init(const char* format, va_list args)
262 {
263 current() = this;
264 if (m_parent)
265 m_parent->writeNewlineIfNeeded();
266 indent();
267 print("( ");
268 m_printFunc(format, args);
269 }
270
271 void ScopedLogger::writeNewlineIfNeeded()
272 {
273 if (!m_multiline) {
274 print("\n");
275 m_multiline = true;
276 }
277 }
278
279 void ScopedLogger::indent()
280 {
281 if (m_parent) {
282 m_parent->indent();
283 print(kScopedLoggerIndent);
284 }
285 }
286
287 void ScopedLogger::log(const char* format, ...)
288 {
289 if (current() != this)
290 return;
291
292 va_list args;
293 va_start(args, format);
294
295 writeNewlineIfNeeded();
296 indent();
297 print(kScopedLoggerIndent);
298 m_printFunc(format, args);
299 print("\n");
300
301 va_end(args);
302 }
303
304 void ScopedLogger::print(const char* format, ...)
305 {
306 va_list args;
307 va_start(args, format);
308 m_printFunc(format, args);
309 va_end(args);
310 }
311
312 ScopedLogger*& ScopedLogger::current()
313 {
314 DEFINE_THREAD_SAFE_STATIC_LOCAL(ThreadSpecific<ScopedLogger*>, ref, new Thre adSpecific<ScopedLogger*>);
315 return *ref;
316 }
317
318 ScopedLogger::PrintFunctionPtr ScopedLogger::m_printFunc = vprintf_stderr_common ;
319
234 void WTFPrintBacktrace(void** stack, int size) 320 void WTFPrintBacktrace(void** stack, int size)
235 { 321 {
236 for (int i = 0; i < size; ++i) { 322 for (int i = 0; i < size; ++i) {
237 FrameToNameScope frameToName(stack[i]); 323 FrameToNameScope frameToName(stack[i]);
238 const int frameNumber = i + 1; 324 const int frameNumber = i + 1;
239 if (frameToName.nullableName()) 325 if (frameToName.nullableName())
240 printf_stderr_common("%-3d %p %s\n", frameNumber, stack[i], frameToN ame.nullableName()); 326 printf_stderr_common("%-3d %p %s\n", frameNumber, stack[i], frameToN ame.nullableName());
241 else 327 else
242 printf_stderr_common("%-3d %p\n", frameNumber, stack[i]); 328 printf_stderr_common("%-3d %p\n", frameNumber, stack[i]);
243 } 329 }
(...skipping 23 matching lines...) Expand all
267 printCallSite(file, line, function); 353 printCallSite(file, line, function);
268 } 354 }
269 355
270 void WTFLogAlways(const char* format, ...) 356 void WTFLogAlways(const char* format, ...)
271 { 357 {
272 va_list args; 358 va_list args;
273 va_start(args, format); 359 va_start(args, format);
274 vprintf_stderr_with_trailing_newline(format, args); 360 vprintf_stderr_with_trailing_newline(format, args);
275 va_end(args); 361 va_end(args);
276 } 362 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698