internal/abi.Map: IndirectKey/IndirectElem

This commit is contained in:
xushiwei
2024-06-15 08:21:27 +08:00
parent 08d00fa234
commit 7b0d23f91f
3 changed files with 24 additions and 3 deletions

View File

@@ -170,6 +170,24 @@ type MapType struct {
Flags uint32
}
// Note: flag values must match those used in the TMAP case
// in ../cmd/compile/internal/reflectdata/reflect.go:writeType.
func (mt *MapType) IndirectKey() bool { // store ptr to key instead of key itself
return mt.Flags&1 != 0
}
func (mt *MapType) IndirectElem() bool { // store ptr to elem instead of elem itself
return mt.Flags&2 != 0
}
func (mt *MapType) ReflexiveKey() bool { // true if k==k for all keys
return mt.Flags&4 != 0
}
func (mt *MapType) NeedKeyUpdate() bool { // true if we need to update key on an overwrite
return mt.Flags&8 != 0
}
func (mt *MapType) HashMightPanic() bool { // true if hash function might panic
return mt.Flags&16 != 0
}
type PtrType struct {
Type
Elem *Type // pointer element (pointed at) type