Set the page mark from 0 to 1. Return true if we set it successfully in this call.
Check if there is an object allocated by malloc at the address.
Check if a given object was allocated by malloc
Check if metadata is mapped for a range [addr, addr + size). Metadata is mapped per chunk,
we will go through all the chunks for [address, address + size), and check if they are mapped.
If any of the chunks is not mapped, return false. Otherwise return true.
Check if metadata is mapped for a given address. We check if the active chunk metadata is mapped,
and if the active chunk bit is marked as well. If the chunk is mapped and marked, we consider the
metadata for the chunk is properly mapped.
Is this allocation an offset malloc? The argument address should be the allocation address (object start)
Load u128 bits of side metadata
Eagerly map the active chunk metadata surrounding chunk_start
We map the active chunk metadata (if not previously mapped), as well as the VO bit metadata
and active page metadata here. Note that if [addr, addr + size) crosses multiple chunks, we
will map for each chunk.
Set the offset bit for the allocation. The argument address should be the allocation address (object start)
Unset the offset bit for the allocation. The argument address should be the allocation address (object start)