Given the vmcode vs vmheap split and completely different size limits on the two, the VMM stats need to be split to be useful. Here we split the heap, special heap, and special mmap stats into reachable and unreachable versions. We also split the public versions in dr_statistics_t, renaming and reordering fields, which is not considered a compatibility break because we are in between releases.
Additionally tested on a large AArch64 app where the stats used to look something like this: Peak vmm blocks for heap : 14679 Peak vmm blocks for cache : 5139 Peak vmm blocks for stack : 9039 Peak vmm blocks for special heap : 4518 Peak vmm blocks for special mmap : 9043 Now they are more useful as this (different params so not perfect numeric comparison) to see that vmcode is using 470M while vmheap is at 2120M: Peak vmm blocks for unreachable heap : 8401 Peak vmm blocks for stack : 14586 Peak vmm blocks for unreachable special heap : 3646 Peak vmm blocks for unreachable special mmap : 7292 Peak vmm blocks for reachable heap : 3650 Peak vmm blocks for cache : 3863 Peak vmm blocks for reachable special mmap : 5
Fixes #4423 (closed)