empty {{ size={($T1*)EndX - ($T1*)BeginX} }} ($T1*)EndX - ($T1*)BeginX ($T1*)CapacityX - ($T1*)BeginX ($T1*)EndX - ($T1*)BeginX ($T1*)BeginX empty [{($T1*)EndX - ($T1*)BeginX}] ($T1*)EndX - ($T1*)BeginX ($T1*)CapacityX - ($T1*)BeginX ($T1*)EndX - ($T1*)BeginX ($T1*)BeginX {BeginX,s} BeginX,s (char*)EndX - (char*)BeginX (char*)CapacityX - (char*)BeginX (char*)EndX - (char*)BeginX (char*)BeginX [{Length}] {Data,s} Data,s Length Length Data {Value & PointerBitMask} [{(Value >> IntShift) & IntMask}] Value & PointerBitMask (Value >> IntShift) & IntMask [P1] {($T1)(Val.Value & Val.PointerBitMask)} [P2] {($T2)(Val.Value & Val.PointerBitMask)} ($T1)(Val.Value & Val.PointerBitMask) ($T2)(Val.Value & Val.PointerBitMask) [P1] {($T1)((Val.Val.Value >> 2) << 2)} [P2] {($T2)((Val.Val.Value >> 2) << 2)} [P3] {($T3)((Val.Val.Value >> 2) << 2)} ($T1)((Val.Val.Value >> 2) << 2) ($T2)((Val.Val.Value >> 2) << 2) ($T3)((Val.Val.Value >> 2) << 2) [P1] {($T1)((Val.Val.Value >> 2) << 2)} [P2] {($T2)((Val.Val.Value >> 2) << 2)} [P3] {($T3)((Val.Val.Value >> 2) << 2)} [P4] {($T4)((Val.Val.Value >> 2) << 2)} ($T1)((Val.Val.Value >> 2) << 2) ($T2)((Val.Val.Value >> 2) << 2) ($T3)((Val.Val.Value >> 2) << 2) ($T4)((Val.Val.Value >> 2) << 2) {{ empty }} {{ head={Head} }} Head Next this empty RefPtr [1 ref] {*Obj} RefPtr [{Obj->ref_cnt} refs] {*Obj} Obj->ref_cnt Obj empty OwningPtr {*Ptr} Ptr {{ [Small Mode] elements={NumElements}, arraySize={CurArraySize} }} {{ [Big Mode] elements={NumElements}, arraySize={CurArraySize} }} NumElements CurArraySize CurArraySize + 1 ($T1*)&CurArray[$i] empty {{ entries={NumEntries}, buckets={NumBuckets} }} NumEntries NumBuckets NumBuckets Buckets {{ NumBuckets={NumBuckets}, ItemSize={ItemSize} }} NumBuckets ItemSize NumBuckets (llvm::StringMapEntry<$T1>*)TheTable[$i] empty ({((llvm::StringMapEntry<$T1>*)this)+1,s}, {second}) ((llvm::StringMapEntry<$T1>*)this)+1,s second {Data}