Don't allocate name strings for empty symbols
This removes unnecessary memory allocations.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: Ide575ea19ab2f8e9fc93092490f1352efa6024a3
Reviewed-on: https://chromium-review.googlesource.com/817415
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/compiler/translator/OutputGLSLBase.cpp b/src/compiler/translator/OutputGLSLBase.cpp
index 488921d..9d02919 100644
--- a/src/compiler/translator/OutputGLSLBase.cpp
+++ b/src/compiler/translator/OutputGLSLBase.cpp
@@ -585,7 +585,7 @@
TString fieldName = field->name();
if (structure->symbolType() == SymbolType::UserDefined ||
structure->symbolType() == SymbolType::Empty)
- fieldName = hashName(TName(fieldName));
+ fieldName = hashName(TName(&fieldName));
out << fieldName;
visitChildren = false;
@@ -604,11 +604,11 @@
ASSERT(interfaceBlock->symbolType() != SymbolType::Empty);
if (interfaceBlock->symbolType() == SymbolType::UserDefined)
{
- fieldName = hashName(TName(fieldName));
+ fieldName = hashName(TName(&fieldName));
}
else
{
- ASSERT(interfaceBlock->name() == "gl_PerVertex");
+ ASSERT(*interfaceBlock->name() == "gl_PerVertex");
}
out << fieldName;
@@ -1177,7 +1177,7 @@
const TField *field = fields[i];
if (writeVariablePrecision(field->type()->getPrecision()))
out << " ";
- out << getTypeName(*field->type()) << " " << hashName(TName(field->name()));
+ out << getTypeName(*field->type()) << " " << hashName(TName(&field->name()));
if (field->type()->isArray())
out << ArrayString(*field->type());
out << ";\n";
@@ -1257,7 +1257,7 @@
if (writeVariablePrecision(field->type()->getPrecision()))
out << " ";
- out << getTypeName(*field->type()) << " " << hashName(TName(field->name()));
+ out << getTypeName(*field->type()) << " " << hashName(TName(&field->name()));
if (field->type()->isArray())
out << ArrayString(*field->type());
out << ";\n";