blob: 06b72d9642a43c1ee130f219fb48270538c159f7 [file] [log] [blame]
Nicolas Capens0bac2852016-05-07 06:09:58 -04001// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
John Bauman66b8ab22014-05-06 15:57:45 -04002//
Nicolas Capens0bac2852016-05-07 06:09:58 -04003// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
John Bauman66b8ab22014-05-06 15:57:45 -04006//
Nicolas Capens0bac2852016-05-07 06:09:58 -04007// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
John Bauman66b8ab22014-05-06 15:57:45 -040014
Nicolas Capenscc863da2015-01-21 15:50:55 -050015#include "InitializeParseContext.h"
John Bauman66b8ab22014-05-06 15:57:45 -040016
Nicolas Capenscc863da2015-01-21 15:50:55 -050017#include "osinclude.h"
John Bauman66b8ab22014-05-06 15:57:45 -040018
19OS_TLSIndex GlobalParseContextIndex = OS_INVALID_TLS_INDEX;
20
21bool InitializeParseContextIndex()
22{
Nicolas Capens0bac2852016-05-07 06:09:58 -040023 assert(GlobalParseContextIndex == OS_INVALID_TLS_INDEX);
John Bauman66b8ab22014-05-06 15:57:45 -040024
Nicolas Capens0bac2852016-05-07 06:09:58 -040025 GlobalParseContextIndex = OS_AllocTLSIndex();
26 return GlobalParseContextIndex != OS_INVALID_TLS_INDEX;
John Bauman66b8ab22014-05-06 15:57:45 -040027}
28
Nicolas Capens978ddc52014-11-11 12:42:08 -050029void FreeParseContextIndex()
John Bauman66b8ab22014-05-06 15:57:45 -040030{
Nicolas Capens0bac2852016-05-07 06:09:58 -040031 assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
John Bauman66b8ab22014-05-06 15:57:45 -040032
Nicolas Capens0bac2852016-05-07 06:09:58 -040033 OS_FreeTLSIndex(GlobalParseContextIndex);
34 GlobalParseContextIndex = OS_INVALID_TLS_INDEX;
John Bauman66b8ab22014-05-06 15:57:45 -040035}
36
Nicolas Capens978ddc52014-11-11 12:42:08 -050037void SetGlobalParseContext(TParseContext* context)
John Bauman66b8ab22014-05-06 15:57:45 -040038{
Nicolas Capens0bac2852016-05-07 06:09:58 -040039 assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
40 OS_SetTLSValue(GlobalParseContextIndex, context);
John Bauman66b8ab22014-05-06 15:57:45 -040041}
42
Nicolas Capens978ddc52014-11-11 12:42:08 -050043TParseContext* GetGlobalParseContext()
John Bauman66b8ab22014-05-06 15:57:45 -040044{
Nicolas Capens0bac2852016-05-07 06:09:58 -040045 assert(GlobalParseContextIndex != OS_INVALID_TLS_INDEX);
46 return static_cast<TParseContext*>(OS_GetTLSValue(GlobalParseContextIndex));
John Bauman66b8ab22014-05-06 15:57:45 -040047}
48