labath added a comment.

The internal representation of DebugNames and Apple indexes is fixed by the 
relevant (pseudo-)standards, so we can't really change it. The question is how 
to efficiently (and cleanly) convert from the internal representation to some 
common thing. The conversion from AppleIndex to DIERef is trivial (which is not 
surprising as it was the first and the overall design was optimized for that). 
With debug_names, the situation gets more tricky. The internal representation 
of debug_names uses CU-relative DIE offsets, but DIERef wants an absolute 
offset. That means the index has to do more work to produce the common 
representation. And it needs to do that for all results, even though a lot of 
the index users are really interested only in a single entry. With the switch 
to user_id_t, _all_ indexes would have to do some extra work to encode it, only 
for their users to have to immediately decode it back.  Having a 
iterator/callback based api would allow us to minimize the impact of that, as 
it would only need to happen for the entries that are really used. And /I 
think/ we could make it interface returns DWARFDies directly, and each index 
converts to that using the most direct approach available.

Another aspect is that is seems fundamentally wrong to use an representation 
which requires knowledge of multiple SymbolFiles when dealing with entities 
which are statically know to come from a single file (here, I mean 
SymbolFileDWARFDebugMap -- I'm glossing over SymbolFileDWARFDwos as those 
aren't really standalone files, and I hope that class will go away soon).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D73206



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

Reply via email to