Clang: Optimize file path cache

We now fetch all directories and sources from the database at file
path cache creation.

Change-Id: I92510b49a234128f4c82b840611db82ead3f1a54
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2019-08-06 13:12:03 +02:00
parent 912b4763e0
commit f9fb4508d4
23 changed files with 295 additions and 210 deletions

View File

@@ -63,19 +63,19 @@ class SymbolsCollectorManager final : public ClangBackEnd::ProcessorManager<Symb
public:
using Processor = SymbolsCollector;
SymbolsCollectorManager(const ClangBackEnd::GeneratedFiles &generatedFiles,
Sqlite::Database &database)
: ProcessorManager(generatedFiles),
m_database(database)
FilePathCaching &filePathCache)
: ProcessorManager(generatedFiles)
, m_filePathCache(filePathCache)
{}
protected:
std::unique_ptr<SymbolsCollector> createProcessor() const
{
return std::make_unique<SymbolsCollector>(m_database);
return std::make_unique<SymbolsCollector>(m_filePathCache);
}
private:
Sqlite::Database &m_database;
FilePathCaching &m_filePathCache;
};
class SymbolIndexing final : public SymbolIndexingInterface
@@ -84,7 +84,7 @@ public:
using BuildDependenciesStorage = ClangBackEnd::BuildDependenciesStorage<Sqlite::Database>;
using SymbolStorage = ClangBackEnd::SymbolStorage<Sqlite::Database>;
SymbolIndexing(Sqlite::Database &database,
FilePathCachingInterface &filePathCache,
FilePathCaching &filePathCache,
const GeneratedFiles &generatedFiles,
ProgressCounter::SetProgressCallback &&setProgressCallback,
const Environment &environment)
@@ -93,7 +93,7 @@ public:
, m_precompiledHeaderStorage(database)
, m_projectPartsStorage(database)
, m_symbolStorage(database)
, m_collectorManger(generatedFiles, database)
, m_collectorManger(generatedFiles, filePathCache)
, m_progressCounter(std::move(setProgressCallback))
, m_indexer(m_indexerQueue,
m_symbolStorage,

View File

@@ -31,8 +31,8 @@
namespace ClangBackEnd {
SymbolsCollector::SymbolsCollector(Sqlite::Database &database)
: m_filePathCache(database)
SymbolsCollector::SymbolsCollector(FilePathCaching &filePathCache)
: m_filePathCache(filePathCache)
, m_indexDataConsumer(std::make_shared<IndexDataConsumer>(m_symbolEntries,
m_sourceLocationEntries,
m_filePathCache,

View File

@@ -42,7 +42,7 @@ namespace ClangBackEnd {
class SymbolsCollector final : public SymbolsCollectorInterface
{
public:
SymbolsCollector(Sqlite::Database &database);
SymbolsCollector(FilePathCaching &filePathCache);
void addFiles(const FilePathIds &filePathIds,
const Utils::SmallStringVector &arguments);
@@ -65,7 +65,7 @@ public:
bool isClean() const { return m_clangTool.isClean(); }
private:
FilePathCaching m_filePathCache;
CopyableFilePathCaching m_filePathCache;
ClangTool m_clangTool;
SymbolEntries m_symbolEntries;
SourceLocationEntries m_sourceLocationEntries;