Documentation
¶
Index ¶
- Variables
- func AlgType(t *types.Type) types.AlgKind
- func AppendElemRType(pos src.XPos, n *ir.CallExpr) ir.Node
- func CompareRType(pos src.XPos, n *ir.BinaryExpr) ir.Node
- func ConvIfaceSrcRType(pos src.XPos, n *ir.ConvExpr) ir.Node
- func ConvIfaceTypeWord(pos src.XPos, n *ir.ConvExpr) ir.Node
- func CopyElemRType(pos src.XPos, n *ir.BinaryExpr) ir.Node
- func DeleteMapRType(pos src.XPos, n *ir.CallExpr) ir.Node
- func EqFor(t *types.Type) (ir.Node, bool)
- func GCSym(t *types.Type) (lsym *obj.LSym, ptrdata int64)
- func ITabAddrAt(pos src.XPos, typ, iface *types.Type) *ir.AddrExpr
- func ITabLsym(typ, iface *types.Type) *obj.LSym
- func IndexMapRType(pos src.XPos, n *ir.IndexExpr) ir.Node
- func InterfaceMethodOffset(ityp *types.Type, i int64) int64
- func MakeChanRType(pos src.XPos, n *ir.MakeExpr) ir.Node
- func MakeMapRType(pos src.XPos, n *ir.MakeExpr) ir.Node
- func MakeSliceElemRType(pos src.XPos, n *ir.MakeExpr) ir.Node
- func MarkTypeSymUsedInInterface(tsym *obj.LSym, from *obj.LSym)
- func MarkTypeUsedInInterface(t *types.Type, from *obj.LSym)
- func MarkUsedIfaceMethod(n *ir.CallExpr)
- func NeedEmit(typ *types.Type) bool
- func NeedRuntimeType(t *types.Type)
- func OldMapBucketType(t *types.Type) *types.Type
- func OldMapIterType() *types.Type
- func OldMapType() *types.Type
- func RangeMapRType(pos src.XPos, n *ir.RangeStmt) ir.Node
- func SwissMapGroupType(t *types.Type) *types.Type
- func SwissMapIterType() *types.Type
- func SwissMapType() *types.Type
- func TrackSym(t *types.Type, f *types.Field) *obj.LSym
- func TypeLinksym(t *types.Type) *obj.LSym
- func TypeLinksymLookup(name string) *obj.LSym
- func TypeLinksymPrefix(prefix string, t *types.Type) *obj.LSym
- func TypePtrAt(pos src.XPos, t *types.Type) *ir.AddrExpr
- func TypeSym(t *types.Type) *types.Sym
- func TypeSymPrefix(prefix string, t *types.Type) *types.Sym
- func UnsafeSliceElemRType(pos src.XPos, n *ir.BinaryExpr) ir.Node
- func WriteBasicTypes()
- func WriteGCSymbols()
- func WritePluginTable()
- func WriteRuntimeTypes()
- func ZeroAddr(size int64) ir.Node
Constants ¶
This section is empty.
Variables ¶
var ZeroSize int64
Functions ¶
func AlgType ¶
AlgType returns the fixed-width AMEMxx variants instead of the general AMEM kind when possible.
func AppendElemRType ¶ added in go1.20
AppendElemRType asserts that n is an "append" operation, and returns an expression that yields the *runtime._type value representing the result slice type's element type.
func CompareRType ¶ added in go1.20
CompareRType asserts that n is a comparison (== or !=) operation between expressions of interface and non-interface type, and returns an expression that yields the *runtime._type value representing the non-interface type.
func ConvIfaceSrcRType ¶ added in go1.20
ConvIfaceSrcRType asserts that n is a conversion from non-interface type to interface type, and returns an expression that yields the *runtime._type for copying the convertee value to the heap.
func ConvIfaceTypeWord ¶ added in go1.20
ConvIfaceTypeWord asserts that n is conversion to interface type, and returns an expression that yields the *runtime._type or *runtime.itab value necessary for implementing the conversion.
- *runtime._type for the destination type, for I2I conversions
- *runtime.itab, for T2I conversions
- *runtime._type for the source type, for T2E conversions
func CopyElemRType ¶ added in go1.20
CopyElemRType asserts that n is a "copy" operation, and returns an expression that yields the *runtime._type value representing the destination slice type's element type.
func DeleteMapRType ¶ added in go1.20
DeleteMapRType asserts that n is a "delete" operation, and returns an expression that yields the *runtime._type value representing the map type.
func EqFor ¶ added in go1.21.0
EqFor returns ONAME node represents type t's equal function, and a boolean to indicates whether a length needs to be passed when calling the function.
func GCSym ¶
GCSym returns a data symbol containing GC information for type t. GC information is always a bitmask, never a gc program. GCSym may be called in concurrent backend, so it does not emit the symbol content.
func ITabAddrAt ¶ added in go1.20
ITabAddrAt returns an expression that evaluates to the *runtime.itab value for concrete type typ implementing interface iface.
func ITabLsym ¶ added in go1.18
ITabLsym returns the LSym representing the itab for concrete type typ implementing interface iface. A dummy tab will be created in the unusual case where typ doesn't implement iface. Normally, this wouldn't happen, because the typechecker would have reported a compile-time error. This situation can only happen when the destination type of a type assert or a type in a type switch is parameterized, so it may sometimes, but not always, be a type that can't implement the specified interface.
func IndexMapRType ¶ added in go1.20
IndexMapRType asserts that n is a map index operation, and returns an expression that yields the *runtime._type value representing the map type.
func InterfaceMethodOffset ¶
InterfaceMethodOffset returns the offset of the i-th method in the interface type descriptor, ityp.
func MakeChanRType ¶ added in go1.20
MakeChanRType asserts that n is a "make" operation for a channel type, and returns an expression that yields the *runtime._type value representing that channel type.
func MakeMapRType ¶ added in go1.20
MakeMapRType asserts that n is a "make" operation for a map type, and returns an expression that yields the *runtime._type value representing that map type.
func MakeSliceElemRType ¶ added in go1.20
MakeSliceElemRType asserts that n is a "make" operation for a slice type, and returns an expression that yields the *runtime._type value representing that slice type's element type.
func MarkTypeSymUsedInInterface ¶ added in go1.21.0
func MarkTypeUsedInInterface ¶
MarkTypeUsedInInterface marks that type t is converted to an interface. This information is used in the linker in dead method elimination.
func MarkUsedIfaceMethod ¶
MarkUsedIfaceMethod marks that an interface method is used in the current function. n is OCALLINTER node.
func NeedEmit ¶ added in go1.18
NeedEmit reports whether typ is a type that we need to emit code for (e.g., runtime type descriptors, method wrappers).
func NeedRuntimeType ¶
NeedRuntimeType ensures that a runtime type descriptor is emitted for t.
func OldMapBucketType ¶
OldMapBucketType makes the map bucket type given the type of the map.
func OldMapIterType ¶
OldMapIterType returns a type interchangeable with runtime.hiter. Make sure this stays in sync with runtime/map.go.
func OldMapType ¶
OldMapType returns a type interchangeable with runtime.hmap. Make sure this stays in sync with runtime/map.go.
func RangeMapRType ¶ added in go1.20
RangeMapRType asserts that n is a "range" loop over a map value, and returns an expression that yields the *runtime._type value representing that map type.
func SwissMapGroupType ¶
SwissMapGroupType makes the map slot group type given the type of the map.
func SwissMapIterType ¶
SwissMapIterType returns a type interchangeable with runtime.hiter. Make sure this stays in sync with runtime/map.go.
func SwissMapType ¶
SwissMapType returns a type interchangeable with internal/runtime/maps.Map. Make sure this stays in sync with internal/runtime/maps/map.go.
func TrackSym ¶
TrackSym returns the symbol for tracking use of field/method f, assumed to be a member of struct/interface type t.
func TypeLinksymLookup ¶
func TypePtrAt ¶ added in go1.20
TypePtrAt returns an expression that evaluates to the *runtime._type value for t.
func UnsafeSliceElemRType ¶ added in go1.20
UnsafeSliceElemRType asserts that n is an "unsafe.Slice" operation, and returns an expression that yields the *runtime._type value representing the result slice type's element type.
func WriteBasicTypes ¶
func WriteBasicTypes()
func WriteGCSymbols ¶ added in go1.22.0
func WriteGCSymbols()
func WritePluginTable ¶ added in go1.22.0
func WritePluginTable()
func WriteRuntimeTypes ¶
func WriteRuntimeTypes()
Types ¶
This section is empty.