blob: c35cedb348be2eea5645c6108ac9ebe287b9d2aa [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 Lang44fa7592014-05-30 11:50:07 -04009#include "common/tls.h"
alokp@chromium.org8b851c62012-06-15 16:25:11 +000010
Geoff Lang44fa7592014-05-30 11:50:07 -040011#include <assert.h>
12
13TLSIndex GlobalParseContextIndex = TLS_INVALID_INDEX;
alokp@chromium.org8b851c62012-06-15 16:25:11 +000014
15bool InitializeParseContextIndex()
16{
Geoff Lang44fa7592014-05-30 11:50:07 -040017 assert(GlobalParseContextIndex == TLS_INVALID_INDEX);
alokp@chromium.org8b851c62012-06-15 16:25:11 +000018
Geoff Lang44fa7592014-05-30 11:50:07 -040019 GlobalParseContextIndex = CreateTLSIndex();
20 return GlobalParseContextIndex != TLS_INVALID_INDEX;
alokp@chromium.org8b851c62012-06-15 16:25:11 +000021}
22
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040023void FreeParseContextIndex()
alokp@chromium.org8b851c62012-06-15 16:25:11 +000024{
Geoff Lang44fa7592014-05-30 11:50:07 -040025 assert(GlobalParseContextIndex != TLS_INVALID_INDEX);
alokp@chromium.org8b851c62012-06-15 16:25:11 +000026
Geoff Lang44fa7592014-05-30 11:50:07 -040027 DestroyTLSIndex(GlobalParseContextIndex);
28 GlobalParseContextIndex = TLS_INVALID_INDEX;
alokp@chromium.org8b851c62012-06-15 16:25:11 +000029}
30
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040031void SetGlobalParseContext(TParseContext* context)
alokp@chromium.org8b851c62012-06-15 16:25:11 +000032{
Geoff Lang44fa7592014-05-30 11:50:07 -040033 assert(GlobalParseContextIndex != TLS_INVALID_INDEX);
34 SetTLSValue(GlobalParseContextIndex, context);
alokp@chromium.org8b851c62012-06-15 16:25:11 +000035}
36
Alok Priyadarshi8156b6b2013-09-23 14:56:58 -040037TParseContext* GetGlobalParseContext()
alokp@chromium.org8b851c62012-06-15 16:25:11 +000038{
Geoff Lang44fa7592014-05-30 11:50:07 -040039 assert(GlobalParseContextIndex != TLS_INVALID_INDEX);
40 return static_cast<TParseContext*>(GetTLSValue(GlobalParseContextIndex));
alokp@chromium.org8b851c62012-06-15 16:25:11 +000041}
42