]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/runtime/gcinfo_test.go
runtime: implement experiment to replace heap bitmap with alloc headers
[gostls13.git] / src / runtime / gcinfo_test.go
index 787160dc2779c8583240e35f0fcc60b172842da8..5f72caf0ecebfbed9c98ca02e4241ca2ac119262 100644 (file)
@@ -91,10 +91,17 @@ func TestGCInfo(t *testing.T) {
 
 func verifyGCInfo(t *testing.T, name string, p any, mask0 []byte) {
        mask := runtime.GCMask(p)
-       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.
                return
        }
+       t.Errorf("bad GC program for %v:\nwant %+v\ngot  %+v", name, mask0, mask)
 }
 
 func trimDead(mask []byte) []byte {