Memory: Put pragma tables in the pool.
Fixes #916 (the last change covered by the PR). 3rd list item in #976.
This commit is contained in:
parent
cbdf871d7f
commit
fd1d07daf1
@ -240,7 +240,10 @@ struct TSourceLoc {
|
|||||||
int column;
|
int column;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef TMap<TString, TString> TPragmaTable;
|
class TPragmaTable : public TMap<TString, TString> {
|
||||||
|
public:
|
||||||
|
POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
|
||||||
|
};
|
||||||
|
|
||||||
const int MaxTokenLength = 1024;
|
const int MaxTokenLength = 1024;
|
||||||
|
|
||||||
|
|||||||
@ -1303,8 +1303,8 @@ typedef TVector<TStorageQualifier> TQualifierList;
|
|||||||
//
|
//
|
||||||
class TIntermAggregate : public TIntermOperator {
|
class TIntermAggregate : public TIntermOperator {
|
||||||
public:
|
public:
|
||||||
TIntermAggregate() : TIntermOperator(EOpNull), userDefined(false), pragmaTable(0) { }
|
TIntermAggregate() : TIntermOperator(EOpNull), userDefined(false), pragmaTable(nullptr) { }
|
||||||
TIntermAggregate(TOperator o) : TIntermOperator(o), pragmaTable(0) { }
|
TIntermAggregate(TOperator o) : TIntermOperator(o), pragmaTable(nullptr) { }
|
||||||
~TIntermAggregate() { delete pragmaTable; }
|
~TIntermAggregate() { delete pragmaTable; }
|
||||||
virtual TIntermAggregate* getAsAggregate() { return this; }
|
virtual TIntermAggregate* getAsAggregate() { return this; }
|
||||||
virtual const TIntermAggregate* getAsAggregate() const { return this; }
|
virtual const TIntermAggregate* getAsAggregate() const { return this; }
|
||||||
@ -1322,7 +1322,7 @@ public:
|
|||||||
void setDebug(bool d) { debug = d; }
|
void setDebug(bool d) { debug = d; }
|
||||||
bool getOptimize() const { return optimize; }
|
bool getOptimize() const { return optimize; }
|
||||||
bool getDebug() const { return debug; }
|
bool getDebug() const { return debug; }
|
||||||
void addToPragmaTable(const TPragmaTable& pTable);
|
void setPragmaTable(const TPragmaTable& pTable);
|
||||||
const TPragmaTable& getPragmaTable() const { return *pragmaTable; }
|
const TPragmaTable& getPragmaTable() const { return *pragmaTable; }
|
||||||
protected:
|
protected:
|
||||||
TIntermAggregate(const TIntermAggregate&); // disallow copy constructor
|
TIntermAggregate(const TIntermAggregate&); // disallow copy constructor
|
||||||
|
|||||||
@ -3170,10 +3170,10 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
|
|||||||
node->getLoc());
|
node->getLoc());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TIntermAggregate::addToPragmaTable(const TPragmaTable& pTable)
|
void TIntermAggregate::setPragmaTable(const TPragmaTable& pTable)
|
||||||
{
|
{
|
||||||
assert(!pragmaTable);
|
assert(pragmaTable == nullptr);
|
||||||
pragmaTable = new TPragmaTable();
|
pragmaTable = new TPragmaTable;
|
||||||
*pragmaTable = pTable;
|
*pragmaTable = pTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2916,7 +2916,7 @@ function_definition
|
|||||||
// information. This information can be queried from the parse tree
|
// information. This information can be queried from the parse tree
|
||||||
$$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
|
$$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
|
||||||
$$->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
|
$$->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
|
||||||
$$->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable);
|
$$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@ -7975,7 +7975,7 @@ yyreduce:
|
|||||||
// information. This information can be queried from the parse tree
|
// information. This information can be queried from the parse tree
|
||||||
(yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
|
(yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize);
|
||||||
(yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
|
(yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
|
||||||
(yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable);
|
(yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
|
||||||
}
|
}
|
||||||
#line 7981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
|
#line 7981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
|
||||||
break;
|
break;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user