Don't copy unmangled built-in names
This optimizes memory and CPU use of symbol table initialization.
This was measured to make a debug build of angle_unittests run around
10% faster on Windows.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: Icd5272c6cfc0d5122550c403621bfa5944c92a83
Reviewed-on: https://chromium-review.googlesource.com/859958
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/compiler/translator/SymbolTable.cpp b/src/compiler/translator/SymbolTable.cpp
index 90a88cd..39dd6cc 100644
--- a/src/compiler/translator/SymbolTable.cpp
+++ b/src/compiler/translator/SymbolTable.cpp
@@ -55,6 +55,16 @@
return (*it).second;
}
+void TSymbolTableLevel::insertUnmangledBuiltInName(const char *name)
+{
+ mUnmangledBuiltInNames.insert(name);
+}
+
+bool TSymbolTableLevel::hasUnmangledBuiltIn(const char *name) const
+{
+ return mUnmangledBuiltInNames.count(name) > 0;
+}
+
TSymbol *TSymbolTable::find(const TString &name,
int shaderVersion,
bool *builtIn,
@@ -519,13 +529,13 @@
{
ASSERT(level >= 0 && level < static_cast<ESymbolLevel>(table.size()));
ASSERT(mUserDefinedUniqueIdsStart == -1);
- table[level]->insertUnmangledBuiltInName(std::string(name));
+ table[level]->insertUnmangledBuiltInName(name);
}
bool TSymbolTable::hasUnmangledBuiltInAtLevel(const char *name, ESymbolLevel level)
{
ASSERT(level >= 0 && level < static_cast<ESymbolLevel>(table.size()));
- return table[level]->hasUnmangledBuiltIn(std::string(name));
+ return table[level]->hasUnmangledBuiltIn(name);
}
bool TSymbolTable::hasUnmangledBuiltInForShaderVersion(const char *name, int shaderVersion)