byte *arena_end;
// central free lists for small size classes.
- // the union makes sure that the MCentrals are
+ // the padding makes sure that the MCentrals are
// spaced CacheLineSize bytes apart, so that each MCentral.Lock
// gets its own cache line.
- union {
+ struct {
MCentral;
byte pad[CacheLineSize];
} central[NumSizeClasses];
Bucket *next; // next in hash list
Bucket *allnext; // next in list of all mbuckets/bbuckets
int32 typ;
+ // Generally unions can break precise GC,
+ // this one is fine because it does not contain pointers.
union
{
struct // typ == MProf