refactor(3p/nix/libexpr): Use Abseil collection types for parser state

Replaces the previous uses of the (ordered!) std::map and std::set
with absl::flat_hash_{map|set}.

After some careful reading it seems that there is actually no
ordering dependency on these types, and the (drop-in) replacements
perform slightly better.

Overall this is not fixing a bottleneck, just a driveby thing.

Change-Id: Ided695dc75676bd58515aa9382df0be0a09c565e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1220
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: isomer <isomer@tvl.fyi>
Tested-by: BuildkiteCI
This commit is contained in:
Vincent Ambo 2020-07-16 22:00:26 +01:00 committed by tazjin
parent 1b42504a12
commit d470ec0d29
2 changed files with 13 additions and 2 deletions

View file

@ -26,6 +26,11 @@ class Symbol {
bool empty() const { return s->empty(); }
friend std::ostream& operator<<(std::ostream& str, const Symbol& sym);
template <typename H>
friend H AbslHashValue(H h, const Symbol& c) {
return H::combine(std::move(h), c.s);
}
};
// SymbolTable is a hash-set based symbol-interning mechanism.