Added asm_volatile_memory
[folly.git] / folly / Portability.h
index bce4dd1f06a7d8c5aabba792c741da6e90b63a42..252362a5006fcca7a87b4d2e5e622e0854b78856 100644 (file)
@@ -339,6 +339,14 @@ inline size_t malloc_usable_size(void* ptr) {
 
 namespace folly {
 
+inline void asm_volatile_memory() {
+#if defined(__clang__) || defined(__GNUC__)
+  asm volatile("" : : : "memory");
+#elif defined(_MSC_VER)
+  ::_ReadWriteBarrier();
+#endif
+}
+
 inline void asm_volatile_pause() {
 #if defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))
   ::_mm_pause();