blob: b4defae56953a9ab88854fe4753c57dce64021d7 [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
Geoff Lang17732822013-08-29 13:46:49 -04007#include "compiler/translator/InitializeParseContext.h"
alokp@chromium.org8b851c62012-06-15 16:25:11 +00008
Geoff Lang17732822013-08-29 13:46:49 -04009#include "compiler/translator/osinclude.h"
alokp@chromium.org8b851c62012-06-15 16:25:11 +000010
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