• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
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/translator/InitializeParseContext.h"
8 
9 #include "compiler/translator/osinclude.h"
10 
11 OS_TLSIndex GlobalParseContextIndex = OS_INVALID_TLS_INDEX;
12 
InitializeParseContextIndex()13 bool InitializeParseContextIndex()
14 {
15     assert(GlobalParseContextIndex == OS_INVALID_TLS_INDEX);
16 
17     GlobalParseContextIndex = OS_AllocTLSIndex();
18     return GlobalParseContextIndex != OS_INVALID_TLS_INDEX;
19 }
20 
FreeParseContextIndex()21 void FreeParseContextIndex()
22 {
23     assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
24 
25     OS_FreeTLSIndex(GlobalParseContextIndex);
26     GlobalParseContextIndex = OS_INVALID_TLS_INDEX;
27 }
28 
SetGlobalParseContext(TParseContext * context)29 void SetGlobalParseContext(TParseContext* context)
30 {
31     assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
32     OS_SetTLSValue(GlobalParseContextIndex, context);
33 }
34 
GetGlobalParseContext()35 TParseContext* GetGlobalParseContext()
36 {
37     assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
38     return static_cast<TParseContext*>(OS_GetTLSValue(GlobalParseContextIndex));
39 }
40 
41