From a86867eb8a37c66f6eda36928208a82bb152b038 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 28 Aug 2018 12:08:37 +0200 Subject: Clang: Introduce parallel indexing Change-Id: I522cb18e6d24b7dbed5d5dfa3a732e5b3b5113bb Reviewed-by: Ivan Donchevskii --- .../source/symbolindexertaskqueue.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.cpp') diff --git a/src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.cpp b/src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.cpp index aa4fd38215..4bfed1fe31 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.cpp +++ b/src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.cpp @@ -25,6 +25,8 @@ #include "symbolindexertaskqueue.h" +#include + namespace ClangBackEnd { namespace { @@ -60,11 +62,6 @@ OutputIt set_union_merge(InputIt1 first1, } -SymbolIndexerTaskQueue::SymbolIndexerTaskQueue() -{ - -} - void SymbolIndexerTaskQueue::addOrUpdateTasks(std::vector &&tasks) { std::vector mergedTasks; @@ -133,7 +130,12 @@ std::vector SymbolIndexerTaskQueue::projectPartNumberIds(const Util void SymbolIndexerTaskQueue::processTasks() { + int taskCount = m_symbolIndexerScheduler.freeSlots(); + auto newEnd = std::prev(m_tasks.end(), std::min(taskCount, int(m_tasks.size()))); + m_symbolIndexerScheduler.addTasks({std::make_move_iterator(newEnd), + std::make_move_iterator(m_tasks.end())}); + m_tasks.erase(newEnd, m_tasks.end()); } } // namespace ClangBackEnd -- cgit v1.2.1