Home | History | Annotate | Download | only in compiler
      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