teemperor added a comment.

In D100965#2720235 <https://reviews.llvm.org/D100965#2720235>, @jingham wrote:

> In D100965#2716239 <https://reviews.llvm.org/D100965#2716239>, @teemperor 
> wrote:
>
>> I am wondering how SourceLocationSpec is related to lldb's Declaration class 
>> (which is FileSpec + line + column and describes a location in source code)? 
>> It seems like the current SourceLocationSpec is just a Declaration with the 
>> two additional search variables (and the first iteration was exactly the 
>> same as Declaration).
>>
>> Could we maybe turn SourceLocationSpec to store a lldb::Declaration instead 
>> of file/line/column? I'm aware that the Declaration class first needs some 
>> cleanup (and a removal of that #ifdef around column....), but right now we 
>> are already using Declarations in a bunch of places to describe source 
>> locations.
>
> Seems to me Declarations and SourceLocationSpec's are different things.  A 
> Declaration describes just where something is in a source file.  And 
> moreover, there need to be a lot of them, since every function, type etc has 
> one.  So you might be concerned about size for this entity.
>
> A SourceLocationSpec (maybe we should make a better name?) is about 
> specifying how you search for a source location (e.g. to set a breakpoint on 
> it.)  And there are never going to be lots of them in flight, since they are 
> tied to user actions.  So we are fairly free to add extra fields to this if 
> we have other ways of specifying the match to a source location.  OTOH, 
> Declarations don't need "include_inlines" or "exact_match" or anything else 
> we might end up adding to specify how to look for matches against a source 
> line specification somebody used in break set or other places.
>
> So I don't think it makes sense to conflate the two.

My point was that `Declaration` should be a member of `SourceLocationSpec` 
(which will then be a Declaration + the search parameters). I agree that those 
two should stay two different classes. From what understand from Ismail this 
patch is (was?) going in the direction you're describing of having 
`SourceLocationSpec` taking over `Declaration` (which would then raise the 
memory concerns you mentioned).

In other words: If the file/line/column members could just be a `Declaration` 
(assuming we remove that ifdef around Declarations column member) then IMHO 
this would be nicer. I would also like the idea of maybe typedef'ing the 
line/column member types in addition to that. Not sure if we need uint32_t for 
columns or maybe we need one day uint64_t for lines.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D100965

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

Reply via email to