summaryrefslogtreecommitdiff
path: root/base/threading/thread_local_storage.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/threading/thread_local_storage.cc')
-rw-r--r--base/threading/thread_local_storage.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/base/threading/thread_local_storage.cc b/base/threading/thread_local_storage.cc
index 48c1dd58c2..90ae69e90e 100644
--- a/base/threading/thread_local_storage.cc
+++ b/base/threading/thread_local_storage.cc
@@ -247,6 +247,17 @@ void PlatformThreadLocalStorage::OnThreadExit() {
void PlatformThreadLocalStorage::OnThreadExit(void* value) {
OnThreadExitInternal(static_cast<TlsVectorEntry*>(value));
}
+
+// static
+void PlatformThreadLocalStorage::ForceFreeTLS() {
+ PlatformThreadLocalStorage::TLSKey key =
+ base::subtle::NoBarrier_AtomicExchange(
+ &g_native_tls_key,
+ PlatformThreadLocalStorage::TLS_KEY_OUT_OF_INDEXES);
+ if (key == PlatformThreadLocalStorage::TLS_KEY_OUT_OF_INDEXES)
+ return;
+ PlatformThreadLocalStorage::FreeTLS(key);
+}
#endif // defined(OS_WIN)
} // namespace internal