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)