[Lldb-commits] [PATCH] D138724: [lldb][Target] Flush the scratch TypeSystem when process gets deleted

Michael Buch via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Dec 1 00:54:28 PST 2022


Michael137 added inline comments.


================
Comment at: lldb/source/Core/ModuleList.cpp:1080
+  bool ret = true;
+  ForEach([&](const ModuleSP &module_sp) {
+    ret &= callback(module_sp);
----------------
aprantl wrote:
> kastiglione wrote:
> > I wonder why ForEach doesn't deal out a `Module &`? I would think a ModuleList should not allow for null Module pointers.
> I think this is historic. +1 for taking a Module & (unless we for some reason need a shared_ptr in the lambda).
I was wondering that myself. I took a stab at changing it to pass a reference but turns out there's several places where we end up storing the shared_ptr. If we changed this to a reference we'd have to call `shared_from_this` for those cases. Which is a bit iffy considering calling it on references that are not shared_ptr owned would throw (which can't happen currently but seems similarly awkward to the current API).

A compromise could be to document that these pointers are guaranteed to be non-null and add an assert into `ForEach`. AFAICT all call-sites assume the pointer is non-null anyway


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D138724



More information about the lldb-commits mailing list