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/InitializeParseContext.h" 8 9 #include "compiler/osinclude.h" 10 11 OS_TLSIndex GlobalParseContextIndex = OS_INVALID_TLS_INDEX; 12 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 21 void FreeParseContextIndex() 22 { 23 assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX); 24 25 OS_FreeTLSIndex(GlobalParseContextIndex); 26 GlobalParseContextIndex = OS_INVALID_TLS_INDEX; 27 } 28 29 void SetGlobalParseContext(TParseContext* context) 30 { 31 assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX); 32 OS_SetTLSValue(GlobalParseContextIndex, context); 33 } 34 35 TParseContext* GetGlobalParseContext() 36 { 37 assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX); 38 return static_cast<TParseContext*>(OS_GetTLSValue(GlobalParseContextIndex)); 39 } 40 41