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

Side by Side Diff: base/dynamic_annotations.h

Issue 201060: s/NDEBUG/NVALGRIND/g in base/dynamic_annotations.* to allow... Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 11 years, 3 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
« no previous file with comments | « no previous file | base/dynamic_annotations.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file defines dynamic annotations for use with dynamic analysis 5 // This file defines dynamic annotations for use with dynamic analysis
6 // tool such as valgrind, PIN, etc. 6 // tool such as valgrind, PIN, etc.
7 // 7 //
8 // Dynamic annotation is a source code annotation that affects 8 // Dynamic annotation is a source code annotation that affects
9 // the generated code (that is, the annotation is not a comment). 9 // the generated code (that is, the annotation is not a comment).
10 // Each such annotation is attached to a particular 10 // Each such annotation is attached to a particular
11 // instruction and/or to a particular object (address) in the program. 11 // instruction and/or to a particular object (address) in the program.
12 // 12 //
13 // The annotations that should be used by users are macros in all upper-case 13 // The annotations that should be used by users are macros in all upper-case
14 // (e.g., ANNOTATE_NEW_MEMORY). 14 // (e.g., ANNOTATE_NEW_MEMORY).
15 // 15 //
16 // Actual implementation of these macros may differ depending on the 16 // Actual implementation of these macros may differ depending on the
17 // dynamic analysis tool being used. 17 // dynamic analysis tool being used.
18 // 18 //
19 // This file supports the following dynamic analysis tools: 19 // This file supports the following dynamic analysis tools:
20 // - None (NDEBUG is defined). 20 // - None (NVALGRIND is defined).
21 // Macros are defined empty. 21 // Macros are defined empty.
22 // - ThreadSanitizer (NDEBUG is not defined). 22 // - ThreadSanitizer (NVALGRIND is not defined).
23 // Macros are defined as calls to non-inlinable empty functions 23 // Macros are defined as calls to non-inlinable empty functions
24 // that are intercepted by ThreadSanitizer. 24 // that are intercepted by ThreadSanitizer.
25 // 25 //
26 #ifndef BASE_DYNAMIC_ANNOTATIONS_H_ 26 #ifndef BASE_DYNAMIC_ANNOTATIONS_H_
27 #define BASE_DYNAMIC_ANNOTATIONS_H_ 27 #define BASE_DYNAMIC_ANNOTATIONS_H_
28 28
29 // All the annotation macros are in effect only in debug mode. 29 #include "base/third_party/valgrind/valgrind.h"
30 #ifndef NDEBUG
31 // Debug build.
32 30
31 #ifndef NVALGRIND
33 // ------------------------------------------------------------- 32 // -------------------------------------------------------------
34 // Annotations useful when implementing condition variables such as CondVar, 33 // Annotations useful when implementing condition variables such as CondVar,
35 // using conditional critical sections (Await/LockWhen) and when constructing 34 // using conditional critical sections (Await/LockWhen) and when constructing
36 // user-defined synchronization mechanisms. 35 // user-defined synchronization mechanisms.
37 // 36 //
38 // The annotations ANNOTATE_HAPPENS_BEFORE() and ANNOTATE_HAPPENS_AFTER() can 37 // The annotations ANNOTATE_HAPPENS_BEFORE() and ANNOTATE_HAPPENS_AFTER() can
39 // be used to define happens-before arcs in user-defined synchronization 38 // be used to define happens-before arcs in user-defined synchronization
40 // mechanisms: the race detector will infer an arc from the former to the 39 // mechanisms: the race detector will infer an arc from the former to the
41 // latter when they share the same argument pointer. 40 // latter when they share the same argument pointer.
42 // 41 //
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 class static_var ## _annotator { \ 301 class static_var ## _annotator { \
303 public: \ 302 public: \
304 static_var ## _annotator() { \ 303 static_var ## _annotator() { \
305 ANNOTATE_BENIGN_RACE(&static_var, \ 304 ANNOTATE_BENIGN_RACE(&static_var, \
306 # static_var ": " description); \ 305 # static_var ": " description); \
307 } \ 306 } \
308 }; \ 307 }; \
309 static static_var ## _annotator the ## static_var ## _annotator;\ 308 static static_var ## _annotator the ## static_var ## _annotator;\
310 } 309 }
311 310
312 #else // NDEBUG is defined 311 #else
313 // Release build, empty macros. 312 // NVALGRIND is defined, empty macros.
314 313
315 #define ANNOTATE_RWLOCK_CREATE(lock) // empty 314 #define ANNOTATE_RWLOCK_CREATE(lock) // empty
316 #define ANNOTATE_RWLOCK_DESTROY(lock) // empty 315 #define ANNOTATE_RWLOCK_DESTROY(lock) // empty
317 #define ANNOTATE_RWLOCK_ACQUIRED(lock, is_w) // empty 316 #define ANNOTATE_RWLOCK_ACQUIRED(lock, is_w) // empty
318 #define ANNOTATE_RWLOCK_RELEASED(lock, is_w) // empty 317 #define ANNOTATE_RWLOCK_RELEASED(lock, is_w) // empty
319 #define ANNOTATE_CONDVAR_LOCK_WAIT(cv, lock) // empty 318 #define ANNOTATE_CONDVAR_LOCK_WAIT(cv, lock) // empty
320 #define ANNOTATE_CONDVAR_WAIT(cv) // empty 319 #define ANNOTATE_CONDVAR_WAIT(cv) // empty
321 #define ANNOTATE_CONDVAR_SIGNAL(cv) // empty 320 #define ANNOTATE_CONDVAR_SIGNAL(cv) // empty
322 #define ANNOTATE_CONDVAR_SIGNAL_ALL(cv) // empty 321 #define ANNOTATE_CONDVAR_SIGNAL_ALL(cv) // empty
323 #define ANNOTATE_HAPPENS_BEFORE(obj) // empty 322 #define ANNOTATE_HAPPENS_BEFORE(obj) // empty
(...skipping 13 matching lines...) Expand all
337 #define ANNOTATE_IGNORE_READS_BEGIN() // empty 336 #define ANNOTATE_IGNORE_READS_BEGIN() // empty
338 #define ANNOTATE_IGNORE_READS_END() // empty 337 #define ANNOTATE_IGNORE_READS_END() // empty
339 #define ANNOTATE_IGNORE_WRITES_BEGIN() // empty 338 #define ANNOTATE_IGNORE_WRITES_BEGIN() // empty
340 #define ANNOTATE_IGNORE_WRITES_END() // empty 339 #define ANNOTATE_IGNORE_WRITES_END() // empty
341 #define ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN() // empty 340 #define ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN() // empty
342 #define ANNOTATE_IGNORE_READS_AND_WRITES_END() // empty 341 #define ANNOTATE_IGNORE_READS_AND_WRITES_END() // empty
343 #define ANNOTATE_NO_OP(arg) // empty 342 #define ANNOTATE_NO_OP(arg) // empty
344 #define ANNOTATE_UNPROTECTED_READ(x) (x) 343 #define ANNOTATE_UNPROTECTED_READ(x) (x)
345 #define ANNOTATE_BENIGN_RACE_STATIC(static_var, description) // empty 344 #define ANNOTATE_BENIGN_RACE_STATIC(static_var, description) // empty
346 345
347 #endif // NDEBUG 346 #endif // NVALGRIND
348 347
349 // Return non-zero value if running under valgrind. 348 // Return non-zero value if running under valgrind.
350 extern "C" int RunningOnValgrind(); 349 extern "C" int RunningOnValgrind();
351 350
352 #endif // BASE_DYNAMIC_ANNOTATIONS_H_ 351 #endif // BASE_DYNAMIC_ANNOTATIONS_H_
OLDNEW
« no previous file with comments | « no previous file | base/dynamic_annotations.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698