X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/9dae56ea45a0f5f8136a5c93d6f3a7f99399ca73..14957cd040308e3eeec43d26bae5d76da13fcd85:/wtf/ThreadSpecificWin.cpp?ds=inline diff --git a/wtf/ThreadSpecificWin.cpp b/wtf/ThreadSpecificWin.cpp index 1a3febb..d72996a 100644 --- a/wtf/ThreadSpecificWin.cpp +++ b/wtf/ThreadSpecificWin.cpp @@ -21,7 +21,6 @@ #include "config.h" #include "ThreadSpecific.h" -#include #if USE(PTHREADS) #error This file should not be compiled by ports that do not use Windows native ThreadSpecific implementation. @@ -29,14 +28,23 @@ namespace WTF { -long g_tls_key_count = 0; -DWORD g_tls_keys[kMaxTlsKeySize]; +long& tlsKeyCount() +{ + static long count; + return count; +} + +DWORD* tlsKeys() +{ + static DWORD keys[kMaxTlsKeySize]; + return keys; +} void ThreadSpecificThreadExit() { - for (long i = 0; i < g_tls_key_count; i++) { + for (long i = 0; i < tlsKeyCount(); i++) { // The layout of ThreadSpecific::Data does not depend on T. So we are safe to do the static cast to ThreadSpecific in order to access its data member. - ThreadSpecific::Data* data = static_cast::Data*>(TlsGetValue(g_tls_keys[i])); + ThreadSpecific::Data* data = static_cast::Data*>(TlsGetValue(tlsKeys()[i])); if (data) data->destructor(data); }