Reorder the fields in both to use padding more efficiently, and add more
comments on the purpose of the fields.
Replace std::vector<SectionChunk*> AssociativeChildren with a
singly-linked list. This avoids the separate vector allocation to list
associative children, and shrinks the 3 pointers used for the typically
empty vector down to 1.
In the end, this reduces the sum of heap allocations used to link
browser_tests.exe with NO PDB by 13.10%, going from 2,248,728 KB to
1,954,071 KB of heap. These numbers exclude memory mapped files, which
are of course a significant factor in LLD's memory usage.
64-bit for a value that's probably <10 most of the time, seems like an awful waste of space ;-)
If this takes so much memory, it'd be interesting to investigate (in terms of performance and dynamic value range) if some of the pointer members below could be converted to offset / bitfields.