The logic "filling" the blank spaces (the padding) when allocating
an object in 32bits mode was not working because the 64bits
integer used to fill the blank was sometimes overlapping with
the next slot.
By separating the logic in two passes that problem goes away.
It's not super clean. It would probably be better to use a word
size integer. But there are so many things in the back-end that
assume 8 byte alignment it would be a massive undertaking to change
that.
The logic "filling" the blank spaces (the padding) when allocating an object in 32bits mode was not working because the 64bits integer used to fill the blank was sometimes overlapping with the next slot.
By separating the logic in two passes that problem goes away. It's not super clean. It would probably be better to use a word size integer. But there are so many things in the back-end that assume 8 byte alignment it would be a massive undertaking to change that.