#elif defined(__arm__)
-#if defined(__ARM_HAVE_LDREXD)
+// TODO: Clang can not process our inline assembly at the moment.
+#if defined(__ARM_HAVE_LDREXD) && !defined(__clang__)
#define NEED_ARM_LDREXD_QUASI_ATOMICS 1
#else
#define NEED_PTHREADS_QUASI_ATOMICS 1
-#endif /*__ARM_HAVE_LDREXD*/
-
-#elif defined(__sh__)
-#define NEED_PTHREADS_QUASI_ATOMICS 1
+#endif
#else
#error "Unsupported atomic operations for this platform"
for (size_t i = 0; i < kSwapLockCount; ++i) {
pthread_mutex_t* m = gSwapLocks[i];
gSwapLocks[i] = NULL;
- dvmDestroyMutex(m);
+ if (m != NULL) {
+ dvmDestroyMutex(m);
+ }
delete m;
}
}