1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2002 The ANGLE Project Authors. All rights reserved. 3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file. 5*8975f5c5SAndroid Build Coastguard Worker // 6*8975f5c5SAndroid Build Coastguard Worker 7*8975f5c5SAndroid Build Coastguard Worker #include "compiler/translator/PoolAlloc.h" 8*8975f5c5SAndroid Build Coastguard Worker 9*8975f5c5SAndroid Build Coastguard Worker #include "common/debug.h" 10*8975f5c5SAndroid Build Coastguard Worker #include "common/tls.h" 11*8975f5c5SAndroid Build Coastguard Worker 12*8975f5c5SAndroid Build Coastguard Worker angle::TLSIndex PoolIndex = TLS_INVALID_INDEX; 13*8975f5c5SAndroid Build Coastguard Worker InitializePoolIndex()14*8975f5c5SAndroid Build Coastguard Workerbool InitializePoolIndex() 15*8975f5c5SAndroid Build Coastguard Worker { 16*8975f5c5SAndroid Build Coastguard Worker ASSERT(PoolIndex == TLS_INVALID_INDEX); 17*8975f5c5SAndroid Build Coastguard Worker 18*8975f5c5SAndroid Build Coastguard Worker PoolIndex = angle::CreateTLSIndex(nullptr); 19*8975f5c5SAndroid Build Coastguard Worker return PoolIndex != TLS_INVALID_INDEX; 20*8975f5c5SAndroid Build Coastguard Worker } 21*8975f5c5SAndroid Build Coastguard Worker FreePoolIndex()22*8975f5c5SAndroid Build Coastguard Workervoid FreePoolIndex() 23*8975f5c5SAndroid Build Coastguard Worker { 24*8975f5c5SAndroid Build Coastguard Worker ASSERT(PoolIndex != TLS_INVALID_INDEX); 25*8975f5c5SAndroid Build Coastguard Worker 26*8975f5c5SAndroid Build Coastguard Worker angle::DestroyTLSIndex(PoolIndex); 27*8975f5c5SAndroid Build Coastguard Worker PoolIndex = TLS_INVALID_INDEX; 28*8975f5c5SAndroid Build Coastguard Worker } 29*8975f5c5SAndroid Build Coastguard Worker GetGlobalPoolAllocator()30*8975f5c5SAndroid Build Coastguard Workerangle::PoolAllocator *GetGlobalPoolAllocator() 31*8975f5c5SAndroid Build Coastguard Worker { 32*8975f5c5SAndroid Build Coastguard Worker ASSERT(PoolIndex != TLS_INVALID_INDEX); 33*8975f5c5SAndroid Build Coastguard Worker return static_cast<angle::PoolAllocator *>(angle::GetTLSValue(PoolIndex)); 34*8975f5c5SAndroid Build Coastguard Worker } 35*8975f5c5SAndroid Build Coastguard Worker SetGlobalPoolAllocator(angle::PoolAllocator * poolAllocator)36*8975f5c5SAndroid Build Coastguard Workervoid SetGlobalPoolAllocator(angle::PoolAllocator *poolAllocator) 37*8975f5c5SAndroid Build Coastguard Worker { 38*8975f5c5SAndroid Build Coastguard Worker ASSERT(PoolIndex != TLS_INVALID_INDEX); 39*8975f5c5SAndroid Build Coastguard Worker angle::SetTLSValue(PoolIndex, poolAllocator); 40*8975f5c5SAndroid Build Coastguard Worker } 41