Clean up function name mangling code
Fix a few incorrect comments about mangled names, and refactor
generating mangled names from function call nodes.
BUG=angleproject:1490
TEST=angle_unittests
Change-Id: I3ee68c4c0982f1a9c28d8e87aafa19f19559bbf8
Reviewed-on: https://chromium-review.googlesource.com/465826
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 4ec871e..a7f7e8f 100644
--- a/src/compiler/translator/SymbolTable.cpp
+++ b/src/compiler/translator/SymbolTable.cpp
@@ -24,6 +24,13 @@
namespace sh
{
+namespace
+{
+
+static const char kFunctionMangledNameSeparator = '(';
+
+} // anonymous namespace
+
int TSymbolTable::uniqueIdCounter = 0;
TSymbolUniqueId::TSymbolUniqueId() : mId(TSymbolTable::nextUniqueId())
@@ -70,20 +77,22 @@
const TString *TFunction::buildMangledName() const
{
- std::string newName = mangleName(getName()).c_str();
+ std::string newName = getName().c_str();
+ newName += kFunctionMangledNameSeparator;
for (const auto &p : parameters)
{
newName += p.type->getMangledName().c_str();
}
-
return NewPoolTString(newName.c_str());
}
-const TString &TFunction::GetMangledNameFromCall(const TString &unmangledFunctionName,
- TIntermSequence &arguments)
+const TString &TFunction::GetMangledNameFromCall(const TString &functionName,
+ const TIntermSequence &arguments)
{
- std::string newName = mangleName(unmangledFunctionName).c_str();
+ std::string newName = functionName.c_str();
+ newName += kFunctionMangledNameSeparator;
+
for (TIntermNode *argument : arguments)
{
newName += argument->getAsTyped()->getType().getMangledName().c_str();
@@ -179,20 +188,6 @@
return 0;
}
-TFunction *TSymbolTable::findBuiltInOp(TIntermAggregate *callNode, int shaderVersion) const
-{
- ASSERT(!callNode->isConstructor());
- ASSERT(!callNode->isFunctionCall());
- TString opString = GetOperatorString(callNode->getOp());
- TSymbol *sym = findBuiltIn(
- TFunction::GetMangledNameFromCall(opString, *callNode->getSequence()), shaderVersion);
- ASSERT(sym != nullptr && sym->isFunction());
-
- TFunction *builtInFunc = static_cast<TFunction *>(sym);
- ASSERT(builtInFunc->getParamCount() == callNode->getSequence()->size());
- return builtInFunc;
-}
-
TSymbolTable::~TSymbolTable()
{
while (table.size() > 0)