From b8ba78d1d3a8e85bd623f2e092bd774f388af808 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 20 Oct 2015 15:39:28 -0600 Subject: [PATCH] avoid slow TLS with MinGW Recent versions of MinGW-W64 use emutls for `__thread` variables, and that's much slower than Windows-native TLS. Go back to the inline-assembly implementation of therad-local access. --- racket/src/racket/include/schthread.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/racket/src/racket/include/schthread.h b/racket/src/racket/include/schthread.h index d7d35352cd..2ff040cc54 100644 --- a/racket/src/racket/include/schthread.h +++ b/racket/src/racket/include/schthread.h @@ -30,12 +30,13 @@ extern "C" { # ifdef _WIN32 # if defined(_WIN64) # if defined(__MINGW32__) -# define THREAD_LOCAL __thread +# define THREAD_LOCAL /* empty */ +# define IMPLEMENT_THREAD_LOCAL_VIA_WIN_TLS # else # define THREAD_LOCAL __declspec(thread) +# define MZ_THREAD_EXTERN extern +# define IMPLEMENT_THREAD_LOCAL_EXTERNALLY_VIA_PROC # endif -# define MZ_THREAD_EXTERN extern -# define IMPLEMENT_THREAD_LOCAL_EXTERNALLY_VIA_PROC # else # define THREAD_LOCAL /* empty */ # define IMPLEMENT_THREAD_LOCAL_VIA_WIN_TLS