Index: base/threading/thread_checker.h |
diff --git a/base/threading/thread_checker.h b/base/threading/thread_checker.h |
index 33b6764e966b269bfceadeba4ad94b8ce4d0bc32..d6e9aab0cfed314c11ed2fe7dcfd635df58c5e47 100644 |
--- a/base/threading/thread_checker.h |
+++ b/base/threading/thread_checker.h |
@@ -6,7 +6,18 @@ |
#define BASE_THREADING_THREAD_CHECKER_H_ |
#pragma once |
-#ifndef NDEBUG |
+// Apart from debug builds, we also enable the thread checker in |
+// builds with DCHECK_ALWAYS_ON so that trybots and waterfall bots |
+// with this define will get the same level of thread checking as |
+// debug bots. |
+// |
+// Note that this does not perfectly match situations where DCHECK is |
+// enabled. For example a non-official release build may have |
+// DCHECK_ALWAYS_ON undefined (and therefore ThreadChecker would be |
+// disabled) but have DCHECKs enabled at runtime. |
+#define ENABLE_THREAD_CHECKER (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)) |
+ |
+#if ENABLE_THREAD_CHECKER |
#include "base/threading/thread_checker_impl.h" |
#endif |
@@ -46,13 +57,15 @@ class ThreadCheckerDoNothing { |
// } |
// |
// In Release mode, CalledOnValidThread will always return true. |
-#ifndef NDEBUG |
+#if ENABLE_THREAD_CHECKER |
class ThreadChecker : public ThreadCheckerImpl { |
}; |
#else |
class ThreadChecker : public ThreadCheckerDoNothing { |
}; |
-#endif // NDEBUG |
+#endif // ENABLE_THREAD_CHECKER |
+ |
+#undef ENABLE_THREAD_CHECKER |
} // namespace base |