From 510bd6dc6920888d422a5520ef050e04e7ca12ef Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Wed, 30 Sep 2009 19:02:33 +0200 Subject: [PATCH] Cache the lookup context. --- src/plugins/cpptools/cppfindreferences.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 90986543f1..743cfae0ec 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -166,12 +166,19 @@ protected: return false; } - LookupContext currentContext(AST *ast) const + LookupContext _previousContext; + + LookupContext currentContext(AST *ast) { unsigned line, column; getTokenStartPosition(ast->firstToken(), &line, &column); Symbol *lastVisibleSymbol = _doc->findSymbolAt(line, column); + + if (lastVisibleSymbol && lastVisibleSymbol == _previousContext.symbol()) + return _previousContext; + LookupContext ctx(lastVisibleSymbol, _exprDoc, _doc, _snapshot); + _previousContext = ctx; return ctx; } @@ -456,6 +463,8 @@ static void find_helper(QFutureInterface &future, Control *control = doc->control(); if (Identifier *id = control->findIdentifier(symbolId->chars(), symbolId->size())) { + QTime tm; + tm.start(); TranslationUnit *unit = doc->translationUnit(); Control *control = doc->control(); @@ -464,10 +473,18 @@ static void find_helper(QFutureInterface &future, doc->parse(); control->setMacroResolver(0); + //qDebug() << "***" << unit->fileName() << "parsed in:" << tm.elapsed(); + + tm.start(); doc->check(); + //qDebug() << "***" << unit->fileName() << "checked in:" << tm.elapsed(); + + tm.start(); Process process(doc, snapshot, &future); process(symbol, id, unit->ast()); + + //qDebug() << "***" << unit->fileName() << "processed in:" << tm.elapsed(); } } -- GitLab