astutils.h: use pre-sized SmallVector in visitAstNodes() (#3919)

This commit is contained in:
Oliver Stöneberg 2022-09-29 21:52:42 +02:00 committed by GitHub
parent eeb6db05f1
commit 083efe6361
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 1 additions and 3 deletions

View File

@ -56,11 +56,9 @@ void visitAstNodes(T *ast, const TFunc &visitor)
if (!ast) if (!ast)
return; return;
std::vector<T *> tokensContainer;
// the size of 8 was determined in tests to be sufficient to avoid excess allocations. also add 1 as a buffer. // the size of 8 was determined in tests to be sufficient to avoid excess allocations. also add 1 as a buffer.
// we might need to increase that value in the future. // we might need to increase that value in the future.
tokensContainer.reserve(8 + 1); std::stack<T *, SmallVector<T *, 8 + 1>> tokens;
std::stack<T *, std::vector<T *>> tokens(std::move(tokensContainer));
T *tok = ast; T *tok = ast;
do { do {
ChildrenToVisit c = visitor(tok); ChildrenToVisit c = visitor(tok);