diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2013-03-13 12:51:58 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@digia.com> | 2013-03-15 15:46:09 +0100 |
commit | bdb5142102d2fa569deb0d9d6f71d8f4e2661213 (patch) | |
tree | 55bf5d6f8927893bffce9d0179e7b594984b4b34 /src/libs/3rdparty/cplusplus/Symbols.cpp | |
parent | fb28c145410b7f9111796655e05003b191bd1dd9 (diff) |
C++: use argumentCount in loops in initializer.
argumentCount is a more expensive function, so try to call it only once,
esp. in loops.
Change-Id: I6f0d420352743ec444487ce3f506ef28e5282d1e
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Symbols.cpp')
-rw-r--r-- | src/libs/3rdparty/cplusplus/Symbols.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/libs/3rdparty/cplusplus/Symbols.cpp b/src/libs/3rdparty/cplusplus/Symbols.cpp index 3def2ae0f8..9e9b66cacb 100644 --- a/src/libs/3rdparty/cplusplus/Symbols.cpp +++ b/src/libs/3rdparty/cplusplus/Symbols.cpp @@ -235,11 +235,12 @@ bool Function::isEqualTo(const Type *other) const const Name *l = unqualifiedName(); const Name *r = o->unqualifiedName(); if (l == r || (l && l->isEqualTo(r))) { - if (argumentCount() != o->argumentCount()) + const unsigned argc = argumentCount(); + if (argc != o->argumentCount()) return false; else if (! _returnType.isEqualTo(o->_returnType)) return false; - for (unsigned i = 0; i < argumentCount(); ++i) { + for (unsigned i = 0; i < argc; ++i) { Symbol *l = argumentAt(i); Symbol *r = o->argumentAt(i); if (! l->type().isEqualTo(r->type())) @@ -297,15 +298,15 @@ Symbol *Function::argumentAt(unsigned index) const bool Function::hasArguments() const { - return ! (argumentCount() == 0 || - (argumentCount() == 1 && argumentAt(0)->type()->isVoidType())); + unsigned argc = argumentCount(); + return ! (argc == 0 || (argc == 1 && argumentAt(0)->type()->isVoidType())); } unsigned Function::minimumArgumentCount() const { unsigned index = 0; - for (; index < argumentCount(); ++index) { + for (unsigned ei = argumentCount(); index < ei; ++index) { if (Argument *arg = argumentAt(index)->asArgument()) { if (arg->hasInitializer()) break; @@ -374,10 +375,11 @@ void Function::visitSymbol0(SymbolVisitor *visitor) bool Function::maybeValidPrototype(unsigned actualArgumentCount) const { + const unsigned argc = argumentCount(); unsigned minNumberArguments = 0; - for (; minNumberArguments < this->argumentCount(); ++minNumberArguments) { - Argument *arg = this->argumentAt(minNumberArguments)->asArgument(); + for (; minNumberArguments < argc; ++minNumberArguments) { + Argument *arg = argumentAt(minNumberArguments)->asArgument(); if (! arg) // TODO: Fix me properly - QTCREATORBUG-8316 return false; @@ -390,7 +392,7 @@ bool Function::maybeValidPrototype(unsigned actualArgumentCount) const // not enough arguments. return false; - } else if (! this->isVariadic() && actualArgumentCount > this->argumentCount()) { + } else if (!isVariadic() && actualArgumentCount > argc) { // too many arguments. return false; } |