| // |
| // Copyright 2002 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| |
| #include "compiler/translator/PoolAlloc.h" |
| |
| #include <assert.h> |
| #include "common/tls.h" |
| |
| TLSIndex PoolIndex = TLS_INVALID_INDEX; |
| |
| bool InitializePoolIndex() |
| { |
| assert(PoolIndex == TLS_INVALID_INDEX); |
| |
| PoolIndex = CreateTLSIndex(); |
| return PoolIndex != TLS_INVALID_INDEX; |
| } |
| |
| void FreePoolIndex() |
| { |
| assert(PoolIndex != TLS_INVALID_INDEX); |
| |
| DestroyTLSIndex(PoolIndex); |
| PoolIndex = TLS_INVALID_INDEX; |
| } |
| |
| angle::PoolAllocator *GetGlobalPoolAllocator() |
| { |
| assert(PoolIndex != TLS_INVALID_INDEX); |
| return static_cast<angle::PoolAllocator *>(GetTLSValue(PoolIndex)); |
| } |
| |
| void SetGlobalPoolAllocator(angle::PoolAllocator *poolAllocator) |
| { |
| assert(PoolIndex != TLS_INVALID_INDEX); |
| SetTLSValue(PoolIndex, poolAllocator); |
| } |