dwblaikie wrote:

> > > Even if we want to have the skeleton compile unit be parsed first, we 
> > > would need to know this from any accelerator table entry, wether it be 
> > > from .debug_names or from our internal manual index.
> > 
> > 
> > True enough, but I think letting this become a lazy property 
> > post-construction is a bit more problematic as it might lead to more 
> > complicated invariants/situations further downstream. By making it a 
> > precondition that any split unit, on construction, has the association with 
> > the skeleton unit - there would be fewer "interesting" situations later 
> > where the lookup occurs when someone isn't expecting it. The split unit 
> > isn't useful without the skeleton for addresses, etc, so it's not like 
> > delaying the skeleton lookup provides better performance, etc.
> 
> It actually does provide better performance as we will often do the type 
> lookup solely in the .dwp file and determine we don't need to actually parse 
> and return the type because the context doesn't match. There is no need for 
> the skeleton unit and the address tables and lines tables in the type lookup 
> case. It allows us to traverse the DIE tree in the .dwp file without ever 
> needing to possibly do an expensive lookup by DWO ID for DWARF4, when it 
> actually isn't needed. We have an accessor to allow us to get the skeleton 
> unit if and only if we need it, and yes, most times it will be filled in 
> already. But when it isn't we can easily access it.

Huh, fair enough - bit surprising, but it works. Still worried about doing 
things a bit too lazily, more complicated states to deal with through the 
debugger, but fair enough. Thanks for walking me through it!

https://github.com/llvm/llvm-project/pull/79544
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to