1// Copyright 2014 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.
4
5#include "mojo/public/cpp/utility/lib/thread_local.h"
6
7#include <assert.h>
8#include <windows.h>
9
10namespace mojo {
11namespace internal {
12
13// static
14void ThreadLocalPlatform::AllocateSlot(SlotType* slot) {
15  *slot = TlsAlloc();
16  assert(*slot != TLS_OUT_OF_INDEXES);
17}
18
19// static
20void ThreadLocalPlatform::FreeSlot(SlotType slot) {
21  if (!TlsFree(slot)) {
22    assert(false);
23  }
24}
25
26// static
27void* ThreadLocalPlatform::GetValueFromSlot(SlotType slot) {
28  return TlsGetValue(slot);
29}
30
31// static
32void ThreadLocalPlatform::SetValueInSlot(SlotType slot, void* value) {
33  if (!TlsSetValue(slot, value)) {
34    assert(false);
35  }
36}
37
38}  // namespace internal
39}  // namespace mojo
40