Currently, the libc++abi fallback memory allocator only guarantees
4-byte alignment even on 64-bit systems. This causes failures
(hardware exceptions due to misalignment) on bare-metal AArch64.
The patch fixes the issue by increasing the heap block size to 8
bytes on 64-bit systems.
This is perhaps silly, but I'm not sure I understand why changing the representation of the offset and size is what we want to do here. Shouldn't we instead be adjusting the pointer we are returning when we allocate memory to have the proper alignment?
In other words, this patch has the side effect that we'll return properly aligned memory, however we could technically keep the same representation as before and also return aligned memory, right?