Bug 1357897 - ensure __has_feature(thread_local) before using it on Mac; r=froydnj

Bug 1348419 enabled thread-local storage for Mac, but only Xcode 8+
supports that feature, which busted building with Xcode 7-.  This change
fixes that bustage by ensuring a Mac compiler supports the feature
before using it.
This commit is contained in:
Myk Melez 2017-04-21 17:15:23 -07:00
Родитель 54cc70d50a
Коммит 4024ee8f8d
1 изменённых файлов: 3 добавлений и 2 удалений

Просмотреть файл

@ -31,7 +31,8 @@ typedef sig_atomic_t sig_safe_t;
namespace detail {
#if defined(HAVE_THREAD_TLS_KEYWORD) || defined(XP_WIN) || defined(XP_MACOSX)
#if defined(HAVE_THREAD_TLS_KEYWORD) || defined(XP_WIN) || \
(defined(XP_MACOSX) && defined(__has_feature) && __has_feature(cxx_thread_local))
#define MOZ_HAS_THREAD_LOCAL
#endif
@ -181,7 +182,7 @@ ThreadLocal<T>::set(const T aValue)
}
#ifdef MOZ_HAS_THREAD_LOCAL
#if defined(XP_WIN) || defined(XP_MACOSX)
#if defined(XP_WIN) || (defined(XP_MACOSX) && defined(__has_feature) && __has_feature(cxx_thread_local))
#define MOZ_THREAD_LOCAL(TYPE) thread_local mozilla::detail::ThreadLocal<TYPE>
#else
#define MOZ_THREAD_LOCAL(TYPE) __thread mozilla::detail::ThreadLocal<TYPE>