blob: dfab027330de959162aba6eae825830d9250b493 [file] [log] [blame]
alokp@chromium.org8b851c62012-06-15 16:25:11 +00001//
2// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
7#include "compiler/InitializeParseContext.h"
8
9#include "compiler/osinclude.h"
10
11OS_TLSIndex GlobalParseContextIndex = OS_INVALID_TLS_INDEX;
12
13bool InitializeParseContextIndex()
14{
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040015 assert(GlobalParseContextIndex == OS_INVALID_TLS_INDEX);
alokp@chromium.org8b851c62012-06-15 16:25:11 +000016
alokp@chromium.org8b851c62012-06-15 16:25:11 +000017 GlobalParseContextIndex = OS_AllocTLSIndex();
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040018 return GlobalParseContextIndex != OS_INVALID_TLS_INDEX;
alokp@chromium.org8b851c62012-06-15 16:25:11 +000019}
20
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040021void FreeParseContextIndex()
alokp@chromium.org8b851c62012-06-15 16:25:11 +000022{
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040023 assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
alokp@chromium.org8b851c62012-06-15 16:25:11 +000024
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040025 OS_FreeTLSIndex(GlobalParseContextIndex);
alokp@chromium.org8b851c62012-06-15 16:25:11 +000026 GlobalParseContextIndex = OS_INVALID_TLS_INDEX;
alokp@chromium.org8b851c62012-06-15 16:25:11 +000027}
28
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040029void SetGlobalParseContext(TParseContext* context)
alokp@chromium.org8b851c62012-06-15 16:25:11 +000030{
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040031 assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
32 OS_SetTLSValue(GlobalParseContextIndex, context);
alokp@chromium.org8b851c62012-06-15 16:25:11 +000033}
34
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040035TParseContext* GetGlobalParseContext()
alokp@chromium.org8b851c62012-06-15 16:25:11 +000036{
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040037 assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
38 return static_cast<TParseContext*>(OS_GetTLSValue(GlobalParseContextIndex));
alokp@chromium.org8b851c62012-06-15 16:25:11 +000039}
40