Index: runtime/vm/os_thread_macos.cc |
diff --git a/runtime/vm/os_thread_macos.cc b/runtime/vm/os_thread_macos.cc |
index 2b870db479d3852a36d82897db5bd6e8f6c93edc..6a9aca22cd58317ef9b058668dc4fc72f2d8b9d9 100644 |
--- a/runtime/vm/os_thread_macos.cc |
+++ b/runtime/vm/os_thread_macos.cc |
@@ -31,6 +31,14 @@ namespace dart { |
} |
+#if defined(DEBUG) |
+#define ASSERT_PTHREAD_SUCCESS(result) VALIDATE_PTHREAD_RESULT(result) |
+#else |
+// NOTE: This (currently) expands to a no-op. |
+#define ASSERT_PTHREAD_SUCCESS(result) ASSERT(result == 0) |
+#endif |
+ |
+ |
#ifdef DEBUG |
#define RETURN_ON_PTHREAD_FAILURE(result) \ |
if (result != 0) { \ |
@@ -223,7 +231,7 @@ void Mutex::Lock() { |
int result = pthread_mutex_lock(data_.mutex()); |
// Specifically check for dead lock to help debugging. |
ASSERT(result != EDEADLK); |
- ASSERT(result == 0); // Verify no other errors. |
+ ASSERT_PTHREAD_SUCCESS(result); // Verify no other errors. |
// When running with assertions enabled we do track the owner. |
#if defined(DEBUG) |
owner_ = OSThread::GetCurrentThreadId(); |
@@ -237,7 +245,7 @@ bool Mutex::TryLock() { |
if ((result == EBUSY) || (result == EDEADLK)) { |
return false; |
} |
- ASSERT(result == 0); // Verify no other errors. |
+ ASSERT_PTHREAD_SUCCESS(result); // Verify no other errors. |
// When running with assertions enabled we do track the owner. |
#if defined(DEBUG) |
owner_ = OSThread::GetCurrentThreadId(); |
@@ -255,7 +263,7 @@ void Mutex::Unlock() { |
int result = pthread_mutex_unlock(data_.mutex()); |
// Specifically check for wrong thread unlocking to aid debugging. |
ASSERT(result != EPERM); |
- ASSERT(result == 0); // Verify no other errors. |
+ ASSERT_PTHREAD_SUCCESS(result); // Verify no other errors. |
} |