OSDN Git Service

merge in klp-release history after reset to klp-dev
[android-x86/dalvik.git] / vm / Atomic.cpp
index 4d376cf..ccbf64a 100644 (file)
 
 #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"
@@ -184,7 +182,9 @@ void dvmQuasiAtomicsShutdown() {
     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;
     }
 }