36
36
#if SWIFT_HAVE_CRASHREPORTERCLIENT
37
37
#include < atomic>
38
38
#include < malloc/malloc.h>
39
+
40
+ #include " swift/Runtime/Atomic.h"
41
+
39
42
#include " CrashReporter.h"
40
43
#endif // SWIFT_HAVE_CRASHREPORTERCLIENT
41
44
@@ -53,15 +56,15 @@ static int demangle_asprintf(char **strp, const char *format, ...);
53
56
54
57
// -- Crash reporter integration ---------------------------------------------
55
58
56
- #if SWIFT_HAVE_CRASHREPORTERCLIENT
57
59
// Report a message to any forthcoming crash log.
58
60
static void reportOnCrash (uint32_t flags, const char *message) {
61
+ #if SWIFT_HAVE_CRASHREPORTERCLIENT
59
62
char *oldMessage = nullptr ;
60
63
char *newMessage = nullptr ;
61
64
62
65
oldMessage = std::atomic_load_explicit (
63
66
(volatile std::atomic<char *> *)&gCRAnnotations .message ,
64
- std::memory_order_relaxed );
67
+ SWIFT_MEMORY_ORDER_CONSUME );
65
68
66
69
do {
67
70
if (newMessage) {
@@ -78,18 +81,14 @@ static void reportOnCrash(uint32_t flags, const char *message) {
78
81
(volatile std::atomic<char *> *)&gCRAnnotations .message ,
79
82
&oldMessage, newMessage,
80
83
std::memory_order_release,
81
- std::memory_order_relaxed ));
84
+ SWIFT_MEMORY_ORDER_CONSUME ));
82
85
83
86
if (oldMessage && malloc_size (oldMessage))
84
87
free (oldMessage);
85
- }
86
-
87
88
#else
88
- static void
89
- reportOnCrash (uint32_t flags, const char *message) {
90
89
// empty
91
- }
92
90
#endif // SWIFT_HAVE_CRASHREPORTERCLIENT
91
+ }
93
92
94
93
// -- Utility functions ------------------------------------------------------
95
94
0 commit comments