From 6ea5fdcded88c8bf67ead461a3f392e260aca37a Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Mon, 7 Sep 2009 13:40:13 +0200 Subject: [PATCH] Speed up the search of a reference to a name. --- src/plugins/cpptools/cppfindreferences.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index ccc26d08812..adae87a67bf 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -223,6 +223,8 @@ static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future, future.setProgressRange(0, files.size()); + const QByteArray literal = word.toLatin1(); + tm.start(); for (int i = 0; i < files.size(); ++i) { const QString &fn = files.at(i); @@ -234,14 +236,15 @@ static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future, const QString source = QTextStream(&f).readAll(); const QByteArray preprocessedCode = snapshot.preprocessedCode(source, fn); Document::Ptr doc = snapshot.documentFromSource(preprocessedCode, fn); - doc->check(); + doc->tokenize(); Control *control = doc->control(); - Identifier *id = control->findOrInsertIdentifier(word.toLatin1().constData()); - - TranslationUnit *unit = doc->translationUnit(); - Process process(future, doc, snapshot); - process(id, unit->ast()); + if (Identifier *id = control->findIdentifier(literal.constData(), literal.size())) { + doc->check(); + TranslationUnit *unit = doc->translationUnit(); + Process process(future, doc, snapshot); + process(id, unit->ast()); + } } future.setProgressValue(files.size()); } -- GitLab