blob: 692817d8b2bd966329a85bea1ae1022b985399cd [file] [log] [blame]
// Copyright 2025 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package scan_test
import (
"internal/goarch"
"internal/runtime/gc"
"internal/runtime/gc/scan"
"testing"
)
type expandFunc func(sizeClass int, packed *gc.ObjMask, unpacked *gc.PtrMask)
func testExpand(t *testing.T, expF expandFunc) {
expR := scan.ExpandReference
testObjs(t, func(t *testing.T, sizeClass int, objs *gc.ObjMask) {
var want, got gc.PtrMask
expR(sizeClass, objs, &want)
expF(sizeClass, objs, &got)
for i := range want {
if got[i] != want[i] {
t.Errorf("expansion differs from reference at bit %d", i*goarch.PtrSize)
if goarch.PtrSize == 4 {
t.Logf("got: %032b", got[i])
t.Logf("want: %032b", want[i])
} else {
t.Logf("got: %064b", got[i])
t.Logf("want: %064b", want[i])
}
}
}
})
}