void SymbolTable::Encoding::appendEncoding(uint64_t number, MemBlockBuilder<uint8_t>& mem_block) {
mem_block.appendOne((number & Low7Bits) | SpilloverMask); // >= 128 need spillover bytes.
std::pair<uint64_t, size_t> SymbolTable::Encoding::decodeNumber(const uint8_t* encoding) {
if (this_type != TokenIter::TokenType::Symbol || this_iter.symbol() != prefix_iter.symbol()) {
mem_block_.reset(); // Logically transfer ownership, enabling empty assert on destruct.
void SymbolTable::addTokensToEncoding(const absl::string_view name, Encoding& encoding) {
auto encode_insert = encode_map_.insert({str->toStringView(), SharedSymbol(next_symbol_)});
MemBlockBuilder<uint8_t> mem_block(Encoding::totalSizeBytes(encoding.bytesRequired()));
mem_block.appendData(absl::MakeSpan(reinterpret_cast<const uint8_t*>(name.data()), name.size()));
StatName StatNamePool::add(absl::string_view str) { return StatName(addReturningStorage(str)); }
void SymbolTable::populateList(const StatName* names, uint32_t num_names, StatNameList& list) {