[PATCH] D43065: [clangd] Remove threading-related code from ClangdUnit.h

Eric Liu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 8 06:43:33 PST 2018


ioeric added a comment.

Nice! The code looks much simpler!

Just some drive-by nits. I don't know the threading work well enough to give useful comments. Will leave the approval to others.



================
Comment at: clangd/ClangdUnit.cpp:399
+  std::unique_ptr<CompilerInvocation> CI;
+  {
+    // FIXME(ibiryukov): store diagnostics from CommandLine when we start
----------------
Do we still need this block?


================
Comment at: clangd/ClangdUnit.cpp:434
+    // Collect diagnostics from both the preamble and the AST.
     if (NewPreamble) {
       Diagnostics.insert(Diagnostics.begin(), NewPreamble->Diags.begin(),
----------------
nit: no braces


================
Comment at: clangd/ClangdUnit.h:161
 
-  /// Mutex protects all fields, declared below it, FileName and Command are not
-  /// mutated.
-  mutable std::mutex Mutex;
-  /// A counter to cancel old rebuilds.
-  unsigned RebuildCounter;
-  /// Used to wait when rebuild is finished before starting another one.
-  bool RebuildInProgress;
-  /// Condition variable to indicate changes to RebuildInProgress.
-  std::condition_variable RebuildCond;
-
-  /// Size of the last built AST, in bytes.
-  std::size_t ASTMemUsage;
-  /// Size of the last build Preamble, in bytes.
-  std::size_t PreambleMemUsage;
-
-  /// Promise and future for the latests AST. Fulfilled during rebuild.
-  /// We use std::shared_ptr here because MVSC fails to compile non-copyable
-  /// classes as template arguments of promise/future.
-  std::promise<std::shared_ptr<ParsedASTWrapper>> ASTPromise;
-  std::shared_future<std::shared_ptr<ParsedASTWrapper>> ASTFuture;
-
-  /// Promise and future for the latests Preamble. Fulfilled during rebuild.
-  std::promise<std::shared_ptr<const PreambleData>> PreamblePromise;
-  std::shared_future<std::shared_ptr<const PreambleData>> PreambleFuture;
-  /// Latest preamble that was built. May be stale, but always available without
-  /// waiting for rebuild to finish.
-  std::shared_ptr<const PreambleData> LatestAvailablePreamble;
-  /// Utility class, required by clang.
+  /// The latest parsed AST.
+  llvm::Optional<ParsedAST> AST;
----------------
`s/latest/last/`?


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D43065





More information about the cfe-commits mailing list