Roll src/third_party/WebKit 640e652:eec14d5 (svn 200948:200949)
[chromium-blink-merge.git] / base / threading / thread_local_win.cc
blob1c74e42138718f7b3d5455328ac2207cdbeec1dc
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/threading/thread_local.h"
7 #include <windows.h>
9 #include "base/logging.h"
11 namespace base {
12 namespace internal {
14 // static
15 void ThreadLocalPlatform::AllocateSlot(SlotType* slot) {
16 *slot = TlsAlloc();
17 CHECK_NE(*slot, TLS_OUT_OF_INDEXES);
20 // static
21 void ThreadLocalPlatform::FreeSlot(SlotType slot) {
22 if (!TlsFree(slot)) {
23 NOTREACHED() << "Failed to deallocate tls slot with TlsFree().";
27 // static
28 void* ThreadLocalPlatform::GetValueFromSlot(SlotType slot) {
29 return TlsGetValue(slot);
32 // static
33 void ThreadLocalPlatform::SetValueInSlot(SlotType slot, void* value) {
34 if (!TlsSetValue(slot, value)) {
35 LOG(FATAL) << "Failed to TlsSetValue().";
39 } // namespace internal
40 } // namespace base