glslang tear down: Include deleting the keyword map in tear down. From johnk and sawato shusaku (shusaku.sawato@dmprof.com).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31115 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
6add20a835
commit
f75276ba5c
@ -50,13 +50,13 @@ bool InitProcess()
|
|||||||
glslang::GetGlobalLock();
|
glslang::GetGlobalLock();
|
||||||
|
|
||||||
if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX) {
|
if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX) {
|
||||||
//
|
//
|
||||||
// Function is re-entrant.
|
// Function is re-entrant.
|
||||||
//
|
//
|
||||||
|
|
||||||
glslang::ReleaseGlobalLock();
|
glslang::ReleaseGlobalLock();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadInitializeIndex = OS_AllocTLSIndex();
|
ThreadInitializeIndex = OS_AllocTLSIndex();
|
||||||
|
|
||||||
@ -65,16 +65,16 @@ bool InitProcess()
|
|||||||
|
|
||||||
glslang::ReleaseGlobalLock();
|
glslang::ReleaseGlobalLock();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! InitializePoolIndex()) {
|
if (! InitializePoolIndex()) {
|
||||||
assert(0 && "InitProcess(): Failed to initialize global pool");
|
assert(0 && "InitProcess(): Failed to initialize global pool");
|
||||||
|
|
||||||
glslang::ReleaseGlobalLock();
|
glslang::ReleaseGlobalLock();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
InitThread();
|
InitThread();
|
||||||
|
|
||||||
glslang::ReleaseGlobalLock();
|
glslang::ReleaseGlobalLock();
|
||||||
return true;
|
return true;
|
||||||
@ -83,23 +83,23 @@ bool InitProcess()
|
|||||||
|
|
||||||
bool InitThread()
|
bool InitThread()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// This function is re-entrant
|
// This function is re-entrant
|
||||||
//
|
//
|
||||||
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
|
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
|
||||||
assert(0 && "InitThread(): Process hasn't been initalised.");
|
assert(0 && "InitThread(): Process hasn't been initalised.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OS_GetTLSValue(ThreadInitializeIndex) != 0)
|
if (OS_GetTLSValue(ThreadInitializeIndex) != 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
InitializeMemoryPools();
|
InitializeMemoryPools();
|
||||||
|
|
||||||
if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) {
|
if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) {
|
||||||
assert(0 && "InitThread(): Unable to set init flag.");
|
assert(0 && "InitThread(): Unable to set init flag.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -112,18 +112,18 @@ bool DetachThread()
|
|||||||
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
|
if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Function is re-entrant and this thread may not have been initalised.
|
// Function is re-entrant and this thread may not have been initialized.
|
||||||
//
|
//
|
||||||
if (OS_GetTLSValue(ThreadInitializeIndex) != 0) {
|
if (OS_GetTLSValue(ThreadInitializeIndex) != 0) {
|
||||||
if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0)) {
|
if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0)) {
|
||||||
assert(0 && "DetachThread(): Unable to clear init flag.");
|
assert(0 && "DetachThread(): Unable to clear init flag.");
|
||||||
success = false;
|
success = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
FreeGlobalPools();
|
FreeGlobalPools();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
@ -139,7 +139,7 @@ bool DetachProcess()
|
|||||||
|
|
||||||
success = DetachThread();
|
success = DetachThread();
|
||||||
|
|
||||||
FreePoolIndex();
|
FreePoolIndex();
|
||||||
|
|
||||||
OS_FreeTLSIndex(ThreadInitializeIndex);
|
OS_FreeTLSIndex(ThreadInitializeIndex);
|
||||||
ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
|
ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
|
||||||
|
@ -514,6 +514,14 @@ void TScanContext::fillInKeywordMap()
|
|||||||
ReservedSet->insert("using");
|
ReservedSet->insert("using");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TScanContext::deleteKeywordMap()
|
||||||
|
{
|
||||||
|
delete KeywordMap;
|
||||||
|
KeywordMap = 0;
|
||||||
|
delete ReservedSet;
|
||||||
|
ReservedSet = 0;
|
||||||
|
}
|
||||||
|
|
||||||
int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
|
int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
|
||||||
{
|
{
|
||||||
do {
|
do {
|
||||||
|
@ -52,6 +52,8 @@ public:
|
|||||||
virtual ~TScanContext() { }
|
virtual ~TScanContext() { }
|
||||||
|
|
||||||
static void fillInKeywordMap();
|
static void fillInKeywordMap();
|
||||||
|
static void deleteKeywordMap();
|
||||||
|
|
||||||
int tokenize(TPpContext*, TParserToken&);
|
int tokenize(TPpContext*, TParserToken&);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -583,7 +583,7 @@ int ShInitialize()
|
|||||||
|
|
||||||
if (! PerProcessGPA)
|
if (! PerProcessGPA)
|
||||||
PerProcessGPA = new TPoolAllocator();
|
PerProcessGPA = new TPoolAllocator();
|
||||||
|
|
||||||
glslang::TScanContext::fillInKeywordMap();
|
glslang::TScanContext::fillInKeywordMap();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -668,6 +668,8 @@ int __fastcall ShFinalize()
|
|||||||
PerProcessGPA = 0;
|
PerProcessGPA = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glslang::TScanContext::deleteKeywordMap();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user