apple-gate ThreadLocal in fibers code
authorHans Fugal <fugalh@fb.com>
Fri, 12 Jun 2015 20:11:35 +0000 (13:11 -0700)
committerSara Golemon <sgolemon@fb.com>
Fri, 12 Jun 2015 20:18:16 +0000 (13:18 -0700)
Summary: Some internal malloc shims broke on using folly::ThreadLocal, so only do that for `__APPLE__`.

Reviewed By: @brianwatling

Differential Revision: D2151318

folly/experimental/fibers/FiberManager-inl.h

index 42d14ac0360ba547e17eda3350cf521bd7e3129b..e0c7e5787c6b006ad241a47708ef0dcbac6d6582 100644 (file)
@@ -22,7 +22,9 @@
 #include <folly/Optional.h>
 #include <folly/Portability.h>
 #include <folly/ScopeGuard.h>
+#ifdef __APPLE__
 #include <folly/ThreadLocal.h>
+#endif
 #include <folly/experimental/fibers/Baton.h>
 #include <folly/experimental/fibers/Fiber.h>
 #include <folly/experimental/fibers/LoopController.h>
@@ -455,8 +457,13 @@ T& FiberManager::local() {
 
 template <typename T>
 T& FiberManager::localThread() {
+#ifndef __APPLE__
+  static thread_local T t;
+  return t;
+#else // osx doesn't support thread_local
   static ThreadLocal<T> t;
   return *t;
+#endif
 }
 
 inline void FiberManager::initLocalData(Fiber& fiber) {