Index: base/threading/thread_checker.h |
diff --git a/base/threading/thread_checker.h b/base/threading/thread_checker.h |
index 33b6764e966b269bfceadeba4ad94b8ce4d0bc32..4386641f70aea84c78208e586ddcf3adf7f761f1 100644 |
--- a/base/threading/thread_checker.h |
+++ b/base/threading/thread_checker.h |
@@ -6,7 +6,22 @@ |
#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. |
+#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON) |
+#define ENABLE_THREAD_CHECKER 1 |
+#else |
+#define ENABLE_THREAD_CHECKER 0 |
+#endif |
+ |
+#if ENABLE_THREAD_CHECKER |
#include "base/threading/thread_checker_impl.h" |
#endif |
@@ -46,13 +61,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 |