Fix to build SharedMutexTest on aarch64
authorKeith Daigle <kdaigle@fb.com>
Wed, 3 Jan 2018 14:58:45 +0000 (06:58 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Wed, 3 Jan 2018 15:07:01 +0000 (07:07 -0800)
Summary:
While trying to build folly on aarch64 found that the SharedMutexTest
wouldn't build because it uses RWTicketSpinLock which was only available
on x86 platforms.  Updated to allow build on aarch64 after suggestion by Orvid

Reviewed By: yfeldblum

Differential Revision: D6611609

fbshipit-source-id: 8ec477cdedac0f0a705608bbac42dd63b3efb919

folly/RWSpinLock.h

index 94f4802..2f177ed 100644 (file)
@@ -143,6 +143,8 @@ pthread_rwlock_t Read        728698     24us       101ns     7.28ms     194us
 #include <x86intrin.h>
 #elif defined(_MSC_VER) && defined(FOLLY_X64)
 #define RW_SPINLOCK_USE_X86_INTRINSIC_
 #include <x86intrin.h>
 #elif defined(_MSC_VER) && defined(FOLLY_X64)
 #define RW_SPINLOCK_USE_X86_INTRINSIC_
+#elif FOLLY_AARCH64
+#define RW_SPINLOCK_USE_X86_INTRINSIC_
 #else
 #undef RW_SPINLOCK_USE_X86_INTRINSIC_
 #endif
 #else
 #undef RW_SPINLOCK_USE_X86_INTRINSIC_
 #endif
@@ -690,9 +692,9 @@ class RWTicketSpinLockT {
   void unlock() {
     RWTicket t;
     t.whole = load_acquire(&ticket.whole);
   void unlock() {
     RWTicket t;
     t.whole = load_acquire(&ticket.whole);
-    FullInt old = t.whole;
 
 #ifdef RW_SPINLOCK_USE_SSE_INSTRUCTIONS_
 
 #ifdef RW_SPINLOCK_USE_SSE_INSTRUCTIONS_
+    FullInt old = t.whole;
     // SSE2 can reduce the lock and unlock overhead by 10%
     static const QuarterInt kDeltaBuf[4] = { 1, 1, 0, 0 };   // write/read/user
     static const __m128i kDelta = IntTraitType::make128(kDeltaBuf);
     // SSE2 can reduce the lock and unlock overhead by 10%
     static const QuarterInt kDeltaBuf[4] = { 1, 1, 0, 0 };   // write/read/user
     static const __m128i kDelta = IntTraitType::make128(kDeltaBuf);