Index: src/core/SkTraceEvent.h |
diff --git a/src/core/SkTraceEvent.h b/src/core/SkTraceEvent.h |
index 34e3adf0eda329b0be187c4b43025d9d940355ce..2c3c9b41819be2851a4608b9b08d4e9bb42a9ee4 100644 |
--- a/src/core/SkTraceEvent.h |
+++ b/src/core/SkTraceEvent.h |
@@ -162,6 +162,7 @@ |
#define SkTraceEvent_DEFINED |
#include "SkEventTracer.h" |
+#include "SkDynamicAnnotations.h" |
// By default, const char* argument values are assumed to have long-lived scope |
// and will not be copied. Use this macro to force a const char* to be copied. |
@@ -764,10 +765,12 @@ |
// write here because it's not strictly needed for correctness. |
// So says Nat. |
// FIXME |
+// |
+// Skia addition: we mark these as unprotected reads and writes to shut up TSAN. |
#define TRACE_EVENT_API_ATOMIC_WORD intptr_t |
-#define TRACE_EVENT_API_ATOMIC_LOAD(var) (*(&var)) |
-#define TRACE_EVENT_API_ATOMIC_STORE(var, value) (var=value) |
+#define TRACE_EVENT_API_ATOMIC_LOAD(var) SK_ANNOTATE_UNPROTECTED_READ(var) |
+#define TRACE_EVENT_API_ATOMIC_STORE(var, value) SK_ANNOTATE_UNPROTECTED_WRITE(&var, value) |
// Defines visibility for classes in trace_event.h |
#define TRACE_EVENT_API_CLASS_EXPORT SK_API |