aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/runtime/gcinfo_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/runtime/gcinfo_test.go')
-rw-r--r--libgo/go/runtime/gcinfo_test.go19
1 files changed, 2 insertions, 17 deletions
diff --git a/libgo/go/runtime/gcinfo_test.go b/libgo/go/runtime/gcinfo_test.go
index c26f411..d329e32 100644
--- a/libgo/go/runtime/gcinfo_test.go
+++ b/libgo/go/runtime/gcinfo_test.go
@@ -63,7 +63,7 @@ func TestGCInfo(t *testing.T) {
}
for i := 0; i < 10; i++ {
- verifyGCInfo(t, "heap Ptr", escape(new(Ptr)), trimDead(padDead(infoPtr)))
+ verifyGCInfo(t, "heap Ptr", escape(new(Ptr)), trimDead(infoPtr))
verifyGCInfo(t, "heap PtrSlice", escape(&make([]*byte, 10)[0]), trimDead(infoPtr10))
verifyGCInfo(t, "heap ScalarPtr", escape(new(ScalarPtr)), trimDead(infoScalarPtr))
verifyGCInfo(t, "heap ScalarPtrSlice", escape(&make([]ScalarPtr, 4)[0]), trimDead(infoScalarPtr4))
@@ -83,25 +83,10 @@ func verifyGCInfo(t *testing.T, name string, p interface{}, mask0 []byte) {
}
}
-func padDead(mask []byte) []byte {
- // Because the dead bit isn't encoded in the second word,
- // and because on 32-bit systems a one-word allocation
- // uses a two-word block, the pointer info for a one-word
- // object needs to be expanded to include an extra scalar
- // on 32-bit systems to match the heap bitmap.
- if runtime.PtrSize == 4 && len(mask) == 1 {
- return []byte{mask[0], 0}
- }
- return mask
-}
-
func trimDead(mask []byte) []byte {
- for len(mask) > 2 && mask[len(mask)-1] == typeScalar {
+ for len(mask) > 0 && mask[len(mask)-1] == typeScalar {
mask = mask[:len(mask)-1]
}
- if len(mask) == 2 && mask[0] == typeScalar && mask[1] == typeScalar {
- mask = mask[:0]
- }
return mask
}