Fix region space when used with SetLengthToUsableSizeVisitor.
The region space relies on obj->SizeOf for some of its logic.
By having SetLengthToUsableSizeVisitor "change" the SizeOf
what's being allocated.
The bug happens during RegionSpace::ClearFromSpace: for unevac regions
we iterate over following regions. If LiveBytes != Top() - Begin()
(which happen for large allocations using SetLengthToUsableSizeVisitor),
we break the loop.
The next region to analyze is a large tail, and we see LiveBytes() == 0
(tails apparently always have live bytes == 0), the code is then
happy to release the large tail, even though the large object is still
(cherry picked from commit 4b361a87520643c888a3d2c52dffa050fabd7a0b)
(cherry picked from commit 0436bb29ed9f9a2958454a1140259349d1659f2a)
(cherry picked from commit 69ddc6dada4bff237dbe4548b4e0b863bcc39921)
6 files changed