mirror of
https://github.com/golang/go
synced 2024-11-25 08:07:57 -07:00
reflect: add test of maps with keys larger than key size
This finds the bug fixed in CL 630279. reflect mutates the SwissMapType of a map[unsafe.Pointer]unsafe.Pointer, which happened to already have the correct GroupSize for all of the maps used in the reflect tests. For #54766. Change-Id: If4428e1e799598e7512edceb3cefb2ad00cfa712 Reviewed-on: https://go-review.googlesource.com/c/go/+/630676 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com> Auto-Submit: Michael Pratt <mpratt@google.com>
This commit is contained in:
parent
f0b0109242
commit
0dafae1360
@ -6309,6 +6309,32 @@ func TestMapOfGCKeys(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// Test assignment and access to a map with keys larger than word size.
|
||||
func TestMapOfGCBigKey(t *testing.T) {
|
||||
type KV struct {
|
||||
i int64
|
||||
j int64
|
||||
}
|
||||
|
||||
kvTyp := TypeFor[KV]()
|
||||
mt := MapOf(kvTyp, kvTyp)
|
||||
|
||||
const n = 100
|
||||
m := MakeMap(mt)
|
||||
for i := 0; i < n; i++ {
|
||||
kv := KV{int64(i), int64(i+1)}
|
||||
m.SetMapIndex(ValueOf(kv), ValueOf(kv))
|
||||
}
|
||||
|
||||
for i := 0; i < n; i++ {
|
||||
kv := KV{int64(i), int64(i+1)}
|
||||
elem := m.MapIndex(ValueOf(kv)).Interface().(KV)
|
||||
if elem != kv {
|
||||
t.Errorf("lost m[%v] = %v, want %v", kv, elem, kv)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestMapOfGCValues(t *testing.T) {
|
||||
type T *uintptr
|
||||
tt := TypeOf(T(nil))
|
||||
|
Loading…
Reference in New Issue
Block a user