This revision was automatically updated to reflect the committed changes. Closed by commit rL341797: [clangd] Fix async index loading (from r341376). (authored by sammccall, committed by ). Herald added a subscriber: llvm-commits.
Changed prior to commit: https://reviews.llvm.org/D51674?vs=164012&id=164638#toc Repository: rL LLVM https://reviews.llvm.org/D51674 Files: clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp Index: clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp =================================================================== --- clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp +++ clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp @@ -270,14 +270,17 @@ Opts.ResourceDir = ResourceDir; Opts.BuildDynamicSymbolIndex = EnableIndex; std::unique_ptr<SymbolIndex> StaticIdx; + std::future<void> AsyncIndexLoad; // Block exit while loading the index. if (EnableIndex && !YamlSymbolFile.empty()) { // Load the index asynchronously. Meanwhile SwapIndex returns no results. SwapIndex *Placeholder; StaticIdx.reset(Placeholder = new SwapIndex(llvm::make_unique<MemIndex>())); - runAsync<void>([Placeholder, &Opts] { + AsyncIndexLoad = runAsync<void>([Placeholder, &Opts] { if (auto Idx = loadIndex(YamlSymbolFile, Opts.URISchemes, UseDex)) Placeholder->reset(std::move(Idx)); }); + if (RunSynchronously) + AsyncIndexLoad.wait(); } Opts.StaticIndex = StaticIdx.get(); Opts.AsyncThreadsCount = WorkerThreadsCount;
Index: clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp =================================================================== --- clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp +++ clang-tools-extra/trunk/clangd/tool/ClangdMain.cpp @@ -270,14 +270,17 @@ Opts.ResourceDir = ResourceDir; Opts.BuildDynamicSymbolIndex = EnableIndex; std::unique_ptr<SymbolIndex> StaticIdx; + std::future<void> AsyncIndexLoad; // Block exit while loading the index. if (EnableIndex && !YamlSymbolFile.empty()) { // Load the index asynchronously. Meanwhile SwapIndex returns no results. SwapIndex *Placeholder; StaticIdx.reset(Placeholder = new SwapIndex(llvm::make_unique<MemIndex>())); - runAsync<void>([Placeholder, &Opts] { + AsyncIndexLoad = runAsync<void>([Placeholder, &Opts] { if (auto Idx = loadIndex(YamlSymbolFile, Opts.URISchemes, UseDex)) Placeholder->reset(std::move(Idx)); }); + if (RunSynchronously) + AsyncIndexLoad.wait(); } Opts.StaticIndex = StaticIdx.get(); Opts.AsyncThreadsCount = WorkerThreadsCount;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits