data: improved ParserClientImpl recording performance
* Removed storage checks and single use methods * cache file ids in ParserClientImpl to avoid lookup for every source location * NameHierarchy::serialize with range to avoid copies when adding nodes * removed duplicate code in IndexerCxx and IndexerJava, moved to Indexer
This commit is contained in:
@@ -1,52 +1,16 @@
|
||||
#include "IndexerJava.h"
|
||||
|
||||
#include "IndexerCommandJava.h"
|
||||
#include "IndexerStateInfo.h"
|
||||
#include "JavaParser.h"
|
||||
#include "ParserClientImpl.h"
|
||||
|
||||
IndexerJava::IndexerJava()
|
||||
: m_indexerStateInfo(std::make_shared<IndexerStateInfo>())
|
||||
{
|
||||
m_indexerStateInfo->indexingInterrupted = false;
|
||||
}
|
||||
|
||||
IndexerJava::~IndexerJava()
|
||||
{
|
||||
JavaParser::clearCaches();
|
||||
}
|
||||
|
||||
void IndexerJava::interrupt()
|
||||
{
|
||||
m_indexerStateInfo->indexingInterrupted = true;
|
||||
}
|
||||
|
||||
std::shared_ptr<IntermediateStorage> IndexerJava::doIndex(std::shared_ptr<IndexerCommandJava> indexerCommand)
|
||||
{
|
||||
std::shared_ptr<ParserClientImpl> parserClient = std::make_shared<ParserClientImpl>();
|
||||
|
||||
std::shared_ptr<JavaParser> parser = std::make_shared<JavaParser>(parserClient, m_indexerStateInfo);
|
||||
|
||||
std::shared_ptr<IntermediateStorage> storage = std::make_shared<IntermediateStorage>();
|
||||
parserClient->setStorage(storage);
|
||||
|
||||
parser->buildIndex(indexerCommand);
|
||||
|
||||
parserClient->resetStorage();
|
||||
|
||||
if (parserClient->hasFatalErrors())
|
||||
{
|
||||
storage->setAllFilesIncomplete();
|
||||
}
|
||||
else
|
||||
{
|
||||
storage->setFilesWithErrorsIncomplete();
|
||||
}
|
||||
|
||||
if (m_indexerStateInfo->indexingInterrupted)
|
||||
{
|
||||
return std::shared_ptr<IntermediateStorage>();
|
||||
}
|
||||
|
||||
return storage;
|
||||
void IndexerJava::doIndex(
|
||||
std::shared_ptr<IndexerCommandJava> indexerCommand,
|
||||
std::shared_ptr<ParserClientImpl> parserClient,
|
||||
std::shared_ptr<IndexerStateInfo> m_indexerStateInfo
|
||||
){
|
||||
JavaParser(parserClient, m_indexerStateInfo).buildIndex(indexerCommand);
|
||||
}
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
#ifndef INDEXER_JAVA_H
|
||||
#define INDEXER_JAVA_H
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "Indexer.h"
|
||||
#include "IndexerCommandJava.h"
|
||||
|
||||
struct IndexerStateInfo;
|
||||
|
||||
class IndexerJava: public Indexer<IndexerCommandJava>
|
||||
class IndexerJava
|
||||
: public Indexer<IndexerCommandJava>
|
||||
{
|
||||
public:
|
||||
IndexerJava();
|
||||
virtual ~IndexerJava();
|
||||
void interrupt() override;
|
||||
|
||||
private:
|
||||
std::shared_ptr<IntermediateStorage> doIndex(std::shared_ptr<IndexerCommandJava> indexerCommand) override;
|
||||
|
||||
std::shared_ptr<IndexerStateInfo> m_indexerStateInfo;
|
||||
void doIndex(
|
||||
std::shared_ptr<IndexerCommandJava> indexerCommand,
|
||||
std::shared_ptr<ParserClientImpl> parserClient,
|
||||
std::shared_ptr<IndexerStateInfo> m_indexerStateInfo) override;
|
||||
};
|
||||
|
||||
#endif // INDEXER_JAVA_H
|
||||
|
||||
Reference in New Issue
Block a user