1-bit global metadata to log an object.
2-bit local metadata for spaces that store a forwarding state for objects.
If this spec is defined in the header, it can be defined with a position of the lowest 2 bits in the forwarding pointer.
1-word local metadata for spaces that may copy objects.
This metadata has to be stored in the header.
This metadata can be defined at a position within the object payload.
As a forwarding pointer is only stored in dead objects which is not
accessible by the language, it is okay that store a forwarding pointer overwrites object payload
2-bits local metadata for the large object space. The two bits serve as
the mark bit and the nursery bit.
1-bit local metadata for spaces that need to mark an object.
1-bit local metadata for spaces that support pinning.