dblaikie added a comment.

In D69230#1727209 <https://reviews.llvm.org/D69230#1727209>, @labath wrote:

> BTW, I was bored on the plane, so I created this proof of concept F10589216: 
> dense.cc <https://reviews.llvm.org/F10589216>. It needs a lot of cleanup of 
> course, but it demonstrates one way to generically store some extra data with 
> some type. It gives each type the option to define a bunch of unused (the 
> patch calls them "free") values (which can be useful for for Optional<>s, 
> DenseMaps, etc.). Also each type can say that it is able to store some extra 
> unrelated bits (like PointerIntPair does), and with a bit of care, one can 
> even nest these types arbitrarily). the main thing I haven't yet figured out 
> is the relationship with DenseMapInfo. Theoretically DenseMapInfo could be 
> implemented on top of DenseInfo, but I am still wondering whether we could 
> not make that a single type (trait) somehow...


Neat - yeah, I'd certainly like to see something along those lines, including 
unification with/replacement of DenseMapInfo (though DenseMapInfo needs other 
things like hashing, so I'm not sure we'd necessarily want to replace them - I 
guess it could be a trait class with "optional" features - no reason an 
implementation necessarily has to have all 4 functions of DenseMapInfo - but 
maybe separating it would be better to express intent (DenseMapInfo builds on 
DenseInfo and adds the requirement for hashing and equality)).

I guess there's an open question to me as to whether DenseOptional should just 
be the only optional we use, and it could fallback to non-dense when the type 
didn't provide some extra states - or should it be like DenseMap where you just 
can't use it and have to use std::map or similar once your type doesn't have 
extra states? I don't know that I feel super strongyl either way - I don't 
think we have lots of hypergeneric code that wants to DenseOptional<T> over 
some unknown T that might have spare bits of state and T that might not.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D69230



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

Reply via email to