Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit fb6a1ab

Browse files
Mike KleinSkia Commit-Bot
authored andcommitted
try un-teaching TSAN about Mac semaphores
Now using dispatch_semaphore_t, maybe it already knows? Change-Id: I65499ceaee195293541a37704ae424bbee7c8740 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248456 Auto-Submit: Mike Klein <mtklein@google.com> Commit-Queue: Ben Wagner <bungeman@google.com> Reviewed-by: Ben Wagner <bungeman@google.com>
1 parent df18296 commit fb6a1ab

File tree

1 file changed

+3
-23
lines changed

1 file changed

+3
-23
lines changed

src/core/SkSemaphore.cpp

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,14 @@
1111
#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
1212
#include <dispatch/dispatch.h>
1313

14-
// We've got to teach TSAN that there is a happens-before edge between
15-
// dispatch_semaphore_signal() and dispatch_semaphore_wait().
16-
#if __has_feature(thread_sanitizer)
17-
extern "C" void AnnotateHappensBefore(const char*, int, void*);
18-
extern "C" void AnnotateHappensAfter (const char*, int, void*);
19-
#else
20-
static void AnnotateHappensBefore(const char*, int, void*) {}
21-
static void AnnotateHappensAfter (const char*, int, void*) {}
22-
#endif
23-
2414
struct SkSemaphore::OSSemaphore {
2515
dispatch_semaphore_t fSemaphore;
2616

27-
OSSemaphore() {
28-
fSemaphore = dispatch_semaphore_create(0/*initial count*/);
29-
}
17+
OSSemaphore() { fSemaphore = dispatch_semaphore_create(0/*initial count*/); }
3018
~OSSemaphore() { dispatch_release(fSemaphore); }
3119

32-
void signal(int n) {
33-
while (n-- > 0) {
34-
AnnotateHappensBefore(__FILE__, __LINE__, &fSemaphore);
35-
dispatch_semaphore_signal(fSemaphore);
36-
}
37-
}
38-
void wait() {
39-
dispatch_semaphore_wait(fSemaphore, DISPATCH_TIME_FOREVER);
40-
AnnotateHappensAfter(__FILE__, __LINE__, &fSemaphore);
41-
}
20+
void signal(int n) { while (n --> 0) { dispatch_semaphore_signal(fSemaphore); } }
21+
void wait() { dispatch_semaphore_wait(fSemaphore, DISPATCH_TIME_FOREVER); }
4222
};
4323
#elif defined(SK_BUILD_FOR_WIN)
4424
struct SkSemaphore::OSSemaphore {

0 commit comments

Comments
 (0)