Athosvk added a comment.
My apologies for getting back on this so late!
In https://reviews.llvm.org/D41102#1017683, @juliehockett wrote:
> So, as an idea (as this diff implements), I updated the string references to
> be a struct, which holds the USR of the referenced type (for serialization,
> both here in the mapper and for the dump option in the reducer, as well as a
> pointer to an `Info` struct. This pointer is not used at this point, but
> would be populated by the reducer. Thoughts?
This seems like quite a decent approach! That being said, I don't see the
pointer yet? I assume you mean that you will be adding this? Additionally, a
slight disadvantage of doing this generic approach is that you need to do
bookkeeping on what it is referencing, but I guess there's no helping that due
to the architecture which makes you rely upon the USR? Personally I'd prefer
having the explicit types if and where possible. So for now a RecordInfo has a
vecotr of Reference's to its parents, but we know the parents can only be of
certain kinds (more than just a RecordType, but you get the point); it won't be
an enum, namespace or function.
As I mentioned, we did this the other way around, which also has the slight
advantage that I only had to create and save the USR once per info instance (as
in, 10 references to a class only add the overhead of 10 pointers, rather than
each having the USR as well), but our disadvantage was of course that we had
delayed serialization (although we could arguably do both simultaneously). It
seems each method has its merits :).
cfe-commits mailing list