[PATCH] D148088: [RFC][clangd] Move preamble index out of document open critical path
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 7 01:57:46 PDT 2023
kadircet added a comment.
thanks, mostly LG. some nits around comments and request for a knob :)
================
Comment at: clang-tools-extra/clangd/ClangdServer.cpp:80
+
+ auto Task = [FIndex(FIndex), Path(Path.str()), Version(Version.str()),
+ ASTCtx(std::move(ASTCtx)),
----------------
let's leave a comment here saying that `FIndex` outlives the `UpdateIndexCallbacks`.
================
Comment at: clang-tools-extra/clangd/ClangdServer.cpp:83
+ CanonIncludes(CanonIncludes)]() mutable {
+ FIndex->updatePreamble(Path, Version, ASTCtx.getASTContext(),
+ ASTCtx.getPreprocessor(), *CanonIncludes);
----------------
can you add a `trace::Span Tracer("PreambleIndexing");` here
================
Comment at: clang-tools-extra/clangd/ClangdServer.cpp:87
- if (FIndex)
- FIndex->updatePreamble(Path, Version, Ctx, PP, CanonIncludes);
+ if (Tasks) {
+ Tasks->runAsync("Preamble indexing for:" + Path + Version,
----------------
can you also introduce a `bool AsyncPreambleIndexing = false;` into `ClangdServer::Options` struct and pass it into `UpdateIndexCallbacks` and make this conditional on that? after testing it for couple weeks, we can make it the default.
================
Comment at: clang-tools-extra/clangd/ClangdServer.cpp:211
IndexTasks.emplace();
+
// Pass a callback into `WorkScheduler` to extract symbols from a newly
----------------
nit: let's revert this change
================
Comment at: clang-tools-extra/clangd/Preamble.cpp:105
void AfterExecute(CompilerInstance &CI) override {
- if (ParsedCallback) {
- trace::Span Tracer("Running PreambleCallback");
- ParsedCallback(CI.getASTContext(), CI.getPreprocessor(), CanonIncludes);
+ // Set PrecompilePreambleConsumer/PCHGenerator to null.
+ if (CI.getASTReader()) {
----------------
the comments are still just talking about what the code is already doing, and not "why".
```
// ASTContext and CompilerInstance can keep references to ASTConsumer (PCHGenerator in case of preamble builds).
// These references will become dangling after preamble build finishes, even if they didn't we don't want operations on the preamble to mutate PCH afterwards.
// So clear those references explicitly here.
```
================
Comment at: clang-tools-extra/clangd/Preamble.cpp:696
+ auto Ctx = CapturedInfo.takeLife();
+ // Set the FileManager VFS to consuming FS.
+ auto StatCacheFS = Result->StatCache->getConsumingFS(VFS);
----------------
again comment is talking about "what" the code does rather than "why", what about:
```
// Stat cache is thread safe only when there are no producers. Hence change the VFS underneath to a consuming fs.
```
================
Comment at: clang-tools-extra/clangd/Preamble.cpp:698
+ auto StatCacheFS = Result->StatCache->getConsumingFS(VFS);
+ Ctx->getFileManager().setVirtualFileSystem(StatCacheFS);
+ // While extending the life of FileMgr and VFS, StatCache should also be
----------------
nit: std::move(StatCacheFS) or just inline the initializer
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D148088/new/
https://reviews.llvm.org/D148088
More information about the cfe-commits
mailing list