X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=vm%2FAtomic.cpp;h=ccbf64af0a7e0c705aa4cf9640484af04705cf9c;hb=c5d0614f778e0f26db913fdc7320f08e9417e984;hp=4d376cf2289feafde7d00af45af6e5b2d34f7ff0;hpb=ce4b1cf456de22f1fbf696ed718f65edbebd1b5c;p=android-x86%2Fdalvik.git diff --git a/vm/Atomic.cpp b/vm/Atomic.cpp index 4d376cf22..ccbf64af0 100644 --- a/vm/Atomic.cpp +++ b/vm/Atomic.cpp @@ -35,14 +35,12 @@ #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; } }