mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-08 18:37:11 +00:00
[ELF] findAllByVersion: optimize a find('@') with hasVersionSuffix. NFC
This commit is contained in:
parent
bb9a0c736b
commit
40eb8a7864
@ -171,10 +171,11 @@ SmallVector<Symbol *, 0> SymbolTable::findAllByVersion(SymbolVersion ver,
|
||||
bool includeNonDefault) {
|
||||
SmallVector<Symbol *, 0> res;
|
||||
SingleStringMatcher m(ver.name);
|
||||
auto check = [&](StringRef name) {
|
||||
size_t pos = name.find('@');
|
||||
auto check = [&](const Symbol &sym) -> bool {
|
||||
if (!includeNonDefault)
|
||||
return pos == StringRef::npos;
|
||||
return !sym.hasVersionSuffix;
|
||||
StringRef name = sym.getName();
|
||||
size_t pos = name.find('@');
|
||||
return !(pos + 1 < name.size() && name[pos + 1] == '@');
|
||||
};
|
||||
|
||||
@ -182,14 +183,13 @@ SmallVector<Symbol *, 0> SymbolTable::findAllByVersion(SymbolVersion ver,
|
||||
for (auto &p : getDemangledSyms())
|
||||
if (m.match(p.first()))
|
||||
for (Symbol *sym : p.second)
|
||||
if (check(sym->getName()))
|
||||
if (check(*sym))
|
||||
res.push_back(sym);
|
||||
return res;
|
||||
}
|
||||
|
||||
for (Symbol *sym : symVector)
|
||||
if (canBeVersioned(*sym) && check(sym->getName()) &&
|
||||
m.match(sym->getName()))
|
||||
if (canBeVersioned(*sym) && check(*sym) && m.match(sym->getName()))
|
||||
res.push_back(sym);
|
||||
return res;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user