This PR reduces the size of the GC object metadata from 3 usizes to 2 usizes. This is achieved in two ways:
Using pointer tagging to store the GC flags in the low bits of the vtable pointer; to ensure enough bits are available, the CollectVtable type is now over-aligned.
Removing the traced_weak_ref flag in favor of a 4th color: GcColor::WhiteWeak.
This PR reduces the size of the GC object metadata from 3
usize
s to 2usize
s. This is achieved in two ways:CollectVtable
type is now over-aligned.traced_weak_ref
flag in favor of a 4th color:GcColor::WhiteWeak
.