Commit 8b9a09ce authored by Delyan Kratunov's avatar Delyan Kratunov Committed by Noam Lerner

Make TurnSequencer non-x86-safe

Summary:
`TurnSequencer` uses inline assembly, which obviously won't work on ARM.
Guard said assembly to x86{,_64} targets.

Test Plan:
Added an always-false `static_assert` to the `ifdef` block, confirmed it gets
triggered (i.e., we're not removing the `pause` on x86_64).

Reviewed By: ngbronson@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant

FB internal diff: D2069320

Signature: t1:2069320:1431663264:3b3fb4282cf2b755f9b26c76b608b91ff665e226
parent 7a4c7813
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <unistd.h> #include <unistd.h>
#include <folly/detail/Futex.h> #include <folly/detail/Futex.h>
#include <folly/Portability.h>
namespace folly { namespace folly {
...@@ -123,7 +124,9 @@ struct TurnSequencer { ...@@ -123,7 +124,9 @@ struct TurnSequencer {
// the first effectSpinCutoff tries are spins, after that we will // the first effectSpinCutoff tries are spins, after that we will
// record ourself as a waiter and block with futexWait // record ourself as a waiter and block with futexWait
if (tries < effectiveSpinCutoff) { if (tries < effectiveSpinCutoff) {
#if defined(__i386__) || FOLLY_X64
asm volatile ("pause"); asm volatile ("pause");
#endif
continue; continue;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment