- if !bytes.Equal(mask, mask0) {
- t.Errorf("bad GC program for %v:\nwant %+v\ngot %+v", name, mask0, mask)
+ if bytes.HasPrefix(mask, mask0) {
+ // Just the prefix matching is OK.
+ //
+ // The Go runtime's pointer/scalar iterator generates pointers beyond
+ // the size of the type, up to the size of the size class. This space
+ // is safe for the GC to scan since it's zero, and GCBits checks to
+ // make sure that's true. But we need to handle the fact that the bitmap
+ // may be larger than we expect.