aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2016-10-01 17:02:56 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2016-10-02 10:59:33 +0000
commit0971e0b7453439f01c72551870d8a2a140758593 (patch)
tree3f1d2bf43aa7dde39484e7d5e9c72af96d8c6eb5 /src
parent9ef524145c9ba796d1e34b3623cea3b0eaed5e3c (diff)
ModuleLoader: Remove redundant property checks
This has a considerable performance impact for larger projects. Example: When resolving the Qt Creator project on my machine, the patch speeds up the property checking process by ~98%, while the overall resolving time goes down by ~15%. Change-Id: Ifd3e3fb4840a4b089f50f5de8e826cab7c6e5c5c Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/lib/corelib/language/moduleloader.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp
index d9fb738a1..b821859ec 100644
--- a/src/lib/corelib/language/moduleloader.cpp
+++ b/src/lib/corelib/language/moduleloader.cpp
@@ -272,6 +272,7 @@ static void handlePropertyError(const ErrorInfo &error, const SetupProjectParame
class PropertyDeclarationCheck : public ValueHandler
{
const QSet<Item *> &m_disabledItems;
+ QSet<Item *> m_handledItems;
Item *m_parentItem;
QString m_currentName;
SetupProjectParameters m_params;
@@ -321,6 +322,9 @@ private:
void handleItem(Item *item)
{
+ if (m_handledItems.contains(item))
+ return;
+ m_handledItems.insert(item);
if (m_disabledItems.contains(item)
// TODO: We never checked module prototypes, apparently. Should we?
// It's currently not possible because of e.g. things like "cpp.staticLibraries"