[Lldb-commits] [PATCH] D96236: [lldb] DWZ 1/9: Pass main DWARFUnit * along DWARFDIEs

Jan Kratochvil via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Fri Apr 23 00:50:20 PDT 2021


jankratochvil planned changes to this revision.
jankratochvil added a comment.

In D96236#2710376 <https://reviews.llvm.org/D96236#2710376>, @clayborg wrote:

> I would be fine with DWARFDie getting bigger to 24B.

Great, so I can return back to 2019.

> These objects are used temporarily and not used as part of the storage of all of a DWARFUnit's DIEs.

This is what I also found in D73206 <https://reviews.llvm.org/D73206>. There was originally a different initial comment:

-----------------------------------------------------------------------------------------------------------------------------

I have found `DWARFDIE` is mostly used only for parameters and autovariables. I found (by `grep -r '<.*DWARF\(Base\|\)DIE' lldb`) only two cases of `DWARFDIE` in permanent structures:

- `DWARFASTParserClang::m_decl_ctx_to_die` refactored in this patch
- `ElaboratingDIEIterator::m_worklist` but I think it will never grow to any more `DWARFDIE`s than a few so it is worse to refactor it to `DIERef` which is slower and due to few entries it does not save any memory space.

-----------------------------------------------------------------------------------------------------------------------------

For the `DWARFASTParserClang::m_decl_ctx_to_die` refactoring I will make it a standalone patch in a new series.

> DWARFUnit objects store an array of DWARFDebugInfoEntry objects and those are what we care about not getting bigger.

The problem is I still need to increase element size of various indexes, such as:

  -  typedef llvm::DenseMap<const DWARFDebugInfoEntry *, clang::Decl *>
  +  typedef llvm::DenseMap<std::pair<DWARFUnit *, const DWARFDebugInfoEntry *>, clang::Decl *>
         DIEToDeclMap;

I was thinking I could templatize it so that there are two variants of the code and it would switch to the larger + (a bit) slower variant only when it detects DWZ file. I understand it is bad to affect LLDB performance by the marginally used DWZ feature.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D96236



More information about the lldb-commits mailing list