hokein accepted this revision.
hokein added inline comments.

================
Comment at: clang-tools-extra/clangd/ClangdLSPServer.cpp:1125
+    Old = std::move(FileToHighlightings[File]);
+    FileToHighlightings[File] = Highlightings;
+  }
----------------
ilya-biryukov wrote:
> jvikstrom wrote:
> > hokein wrote:
> > > ilya-biryukov wrote:
> > > > NIT: avoid copying (from `Highlightings` into the map) under a lock, 
> > > > make the copy outside the lock instead
> > > I think we can even avoid copy, since we only use the `Highlightings` for 
> > > calculating the diff.
> > > 
> > > Maybe just 
> > > 
> > > ```
> > > {
> > >     std::lock_guard<std::mutex> Lock(HighlightingsMutex);
> > >     Old = std::move(FileToHighlightings[File]);
> > > }
> > > // calculate the diff.
> > > {  
> > >      std::lock_guard<std::mutex> Lock(HighlightingsMutex);
> > >      FileToHighlightings[File] = std::move(Highlightings);
> > > }
> > > ```
> > I think I changed this to only lock once (and copy instead) at the same 
> > time me and @ilya-biryukov were talking about the race condition (?)
> It means there's a window where nobody can access the highlightings for this 
> file. Which is probably fine, we really do use this only for computing the 
> diff and nothing else.
> 
> But doing the copy shouldn't matter here either, so leaving as is also looks 
> ok from my side.
> 
> If you decide to avoid an extra copy, please add comments to 
> `FileToHighlightings` (e.g. `only used to compute diffs, must not be used 
> outside onHighlightingsReady and didRemove`).
> It is declared really close to `FixItsMap` and looks very similar, but the 
> latter is used in completely different ways; that could lead to confusion.
> 
> Don't remember exact details about race conditions, but we should be good now 
> that it's called inside `Publish()`
I'm fine with the current state, avoiding the copy cost would make the code 
here a bit mess...


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64475/new/

https://reviews.llvm.org/D64475



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to