summaryrefslogtreecommitdiff
path: root/src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.cpp
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2018-08-28 12:08:37 +0200
committerMarco Bubke <marco.bubke@qt.io>2018-09-03 12:13:10 +0000
commita86867eb8a37c66f6eda36928208a82bb152b038 (patch)
treea1e1f5fe9de1cce0f9e4933cce0ff7b313e71ba5 /src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.cpp
parent86cd29b13c5489e67dcbfa223ac3519a9c4c520c (diff)
downloadqt-creator-a86867eb8a37c66f6eda36928208a82bb152b038.tar.gz
Clang: Introduce parallel indexing
Change-Id: I522cb18e6d24b7dbed5d5dfa3a732e5b3b5113bb Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Diffstat (limited to 'src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.cpp')
-rw-r--r--src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.cpp12
1 files changed, 7 insertions, 5 deletions
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 <symbolindexertaskschedulerinterface.h>
+
namespace ClangBackEnd {
namespace {
@@ -60,11 +62,6 @@ OutputIt set_union_merge(InputIt1 first1,
}
-SymbolIndexerTaskQueue::SymbolIndexerTaskQueue()
-{
-
-}
-
void SymbolIndexerTaskQueue::addOrUpdateTasks(std::vector<SymbolIndexerTask> &&tasks)
{
std::vector<SymbolIndexerTask> mergedTasks;
@@ -133,7 +130,12 @@ std::vector<std::size_t> SymbolIndexerTaskQueue::projectPartNumberIds(const Util
void SymbolIndexerTaskQueue::processTasks()
{
+ int taskCount = m_symbolIndexerScheduler.freeSlots();
+ auto newEnd = std::prev(m_tasks.end(), std::min<int>(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