package abi

Import Path
	internal/abi (on go.dev)

Dependency Relation
	imports 2 packages, and imported by 3 packages


Package-Level Type Names (total 26, in which 25 are exported)
/* sort exporteds by: | */
ArrayType represents a fixed array type. // array element type Len uintptr // slice type Type Type // alignment of variable with this type function for comparing objects of this type (ptr to object A, ptr to object B) -> ==? // alignment of struct field with this type GCData stores the GC type data for the garbage collector. If the KindGCProg bit is set in kind, GCData is a GC program. Otherwise it is a ptrmask bitmap. See mbitmap.go for details. // hash of type; avoids computation in hash tables // enumeration for C // number of (prefix) bytes in the type that can contain pointers // type for pointer to this type, may be zero Type.Size_ uintptr // string form // extra type information flags Align returns the alignment of data with type t. ArrayType returns t cast to a *ArrayType, or nil if its tag does not match. ChanDir returns the direction of t if t is a channel type, otherwise InvalidDir (0). (*ArrayType) Common() *Type (*ArrayType) ExportedMethods() []Method (*ArrayType) FieldAlign() int FuncType returns t cast to a *FuncType, or nil if its tag does not match. (*ArrayType) GcSlice(begin, end uintptr) []byte (*ArrayType) HasName() bool IfaceIndir reports whether t is stored indirectly in an interface value. InterfaceType returns t cast to a *InterfaceType, or nil if its tag does not match. isDirectIface reports whether t is stored directly in an interface value. (*ArrayType) Key() *Type (*ArrayType) Kind() Kind MapType returns t cast to a *MapType, or nil if its tag does not match. (*ArrayType) NumMethod() int (*ArrayType) Pointers() bool Size returns the size of data with type t. StructType returns t cast to a *StructType, or nil if its tag does not match. Uncommon returns a pointer to T's "uncommon" data if there is any, otherwise nil func (*Type).ArrayType() *ArrayType
func (*Type).ChanDir() ChanDir const BothDir const InvalidDir const RecvDir const SendDir
ChanType represents a channel type Dir ChanDir Elem *Type Type Type // alignment of variable with this type function for comparing objects of this type (ptr to object A, ptr to object B) -> ==? // alignment of struct field with this type GCData stores the GC type data for the garbage collector. If the KindGCProg bit is set in kind, GCData is a GC program. Otherwise it is a ptrmask bitmap. See mbitmap.go for details. // hash of type; avoids computation in hash tables // enumeration for C // number of (prefix) bytes in the type that can contain pointers // type for pointer to this type, may be zero Type.Size_ uintptr // string form // extra type information flags Align returns the alignment of data with type t. ArrayType returns t cast to a *ArrayType, or nil if its tag does not match. ChanDir returns the direction of t if t is a channel type, otherwise InvalidDir (0). (*ChanType) Common() *Type (*ChanType) ExportedMethods() []Method (*ChanType) FieldAlign() int FuncType returns t cast to a *FuncType, or nil if its tag does not match. (*ChanType) GcSlice(begin, end uintptr) []byte (*ChanType) HasName() bool IfaceIndir reports whether t is stored indirectly in an interface value. InterfaceType returns t cast to a *InterfaceType, or nil if its tag does not match. isDirectIface reports whether t is stored directly in an interface value. (*ChanType) Key() *Type (*ChanType) Kind() Kind Len returns the length of t if t is an array type, otherwise 0 MapType returns t cast to a *MapType, or nil if its tag does not match. (*ChanType) NumMethod() int (*ChanType) Pointers() bool Size returns the size of data with type t. StructType returns t cast to a *StructType, or nil if its tag does not match. Uncommon returns a pointer to T's "uncommon" data if there is any, otherwise nil
A FuncFlag records bits about a function, passed to the runtime. const FuncFlagAsm const FuncFlagSPWrite const FuncFlagTopFrame
A FuncID identifies particular functions that need to be treated specially by the runtime. Note that in some situations involving plugins, there may be multiple copies of a particular special runtime function. const FuncID_abort const FuncID_asmcgocall const FuncID_asyncPreempt const FuncID_cgocallback const FuncID_debugCallV2 const FuncID_gcBgMarkWorker const FuncID_goexit const FuncID_gogo const FuncID_gopanic const FuncID_handleAsyncEvent const FuncID_mcall const FuncID_morestack const FuncID_mstart const FuncID_panicwrap const FuncID_rt0_go const FuncID_runfinq const FuncID_runtime_main const FuncID_sigpanic const FuncID_systemstack const FuncID_systemstack_switch const FuncIDNormal const FuncIDWrapper
funcType represents a function type. A *Type for each in and out parameter is stored in an array that directly follows the funcType (and possibly its uncommonType). So a function type with one method, one input, and one output is: struct { funcType uncommonType [2]*rtype // [0] is in, [1] is out } InCount uint16 // top bit is set if last input parameter is ... Type Type // alignment of variable with this type function for comparing objects of this type (ptr to object A, ptr to object B) -> ==? // alignment of struct field with this type GCData stores the GC type data for the garbage collector. If the KindGCProg bit is set in kind, GCData is a GC program. Otherwise it is a ptrmask bitmap. See mbitmap.go for details. // hash of type; avoids computation in hash tables // enumeration for C // number of (prefix) bytes in the type that can contain pointers // type for pointer to this type, may be zero Type.Size_ uintptr // string form // extra type information flags Align returns the alignment of data with type t. ArrayType returns t cast to a *ArrayType, or nil if its tag does not match. ChanDir returns the direction of t if t is a channel type, otherwise InvalidDir (0). (*FuncType) Common() *Type Elem returns the element type for t if t is an array, channel, map, pointer, or slice, otherwise nil. (*FuncType) ExportedMethods() []Method (*FuncType) FieldAlign() int FuncType returns t cast to a *FuncType, or nil if its tag does not match. (*FuncType) GcSlice(begin, end uintptr) []byte (*FuncType) HasName() bool IfaceIndir reports whether t is stored indirectly in an interface value. (*FuncType) In(i int) *Type (*FuncType) InSlice() []*Type InterfaceType returns t cast to a *InterfaceType, or nil if its tag does not match. isDirectIface reports whether t is stored directly in an interface value. (*FuncType) IsVariadic() bool (*FuncType) Key() *Type (*FuncType) Kind() Kind Len returns the length of t if t is an array type, otherwise 0 MapType returns t cast to a *MapType, or nil if its tag does not match. (*FuncType) NumIn() int (*FuncType) NumMethod() int (*FuncType) NumOut() int (*FuncType) Out(i int) *Type (*FuncType) OutSlice() []*Type (*FuncType) Pointers() bool Size returns the size of data with type t. StructType returns t cast to a *StructType, or nil if its tag does not match. Uncommon returns a pointer to T's "uncommon" data if there is any, otherwise nil func (*Type).FuncType() *FuncType
Imethod represents a method on an interface type // name of method // .(*FuncType) underneath
IntArgRegBitmap is a bitmap large enough to hold one bit per integer argument/return register. Get returns whether the i'th bit of the bitmap is set. nosplit because it's called in extremely sensitive contexts, like on the reflectcall return path. Set sets the i'th bit of the bitmap to 1.
// sorted by hash // import path Type Type // alignment of variable with this type function for comparing objects of this type (ptr to object A, ptr to object B) -> ==? // alignment of struct field with this type GCData stores the GC type data for the garbage collector. If the KindGCProg bit is set in kind, GCData is a GC program. Otherwise it is a ptrmask bitmap. See mbitmap.go for details. // hash of type; avoids computation in hash tables // enumeration for C // number of (prefix) bytes in the type that can contain pointers // type for pointer to this type, may be zero Type.Size_ uintptr // string form // extra type information flags Align returns the alignment of data with type t. ArrayType returns t cast to a *ArrayType, or nil if its tag does not match. ChanDir returns the direction of t if t is a channel type, otherwise InvalidDir (0). (*InterfaceType) Common() *Type Elem returns the element type for t if t is an array, channel, map, pointer, or slice, otherwise nil. (*InterfaceType) ExportedMethods() []Method (*InterfaceType) FieldAlign() int FuncType returns t cast to a *FuncType, or nil if its tag does not match. (*InterfaceType) GcSlice(begin, end uintptr) []byte (*InterfaceType) HasName() bool IfaceIndir reports whether t is stored indirectly in an interface value. InterfaceType returns t cast to a *InterfaceType, or nil if its tag does not match. isDirectIface reports whether t is stored directly in an interface value. (*InterfaceType) Key() *Type (*InterfaceType) Kind() Kind Len returns the length of t if t is an array type, otherwise 0 MapType returns t cast to a *MapType, or nil if its tag does not match. NumMethod returns the number of interface methods in the type's method set. (*InterfaceType) Pointers() bool Size returns the size of data with type t. StructType returns t cast to a *StructType, or nil if its tag does not match. Uncommon returns a pointer to T's "uncommon" data if there is any, otherwise nil func (*Type).InterfaceType() *InterfaceType
A Kind represents the specific kind of type that a Type represents. The zero Kind is not a valid kind. String returns the name of k. Kind : fmt.Stringer func (*Type).Kind() Kind func internal/reflectlite.Type.Kind() reflectlite.Kind func internal/reflectlite.Value.Kind() reflectlite.Kind const Array const Bool const Chan const Complex128 const Complex64 const Float32 const Float64 const Func const Int const Int16 const Int32 const Int64 const Int8 const Interface const Invalid const Map const Pointer const Slice const String const Struct const Uint const Uint16 const Uint32 const Uint64 const Uint8 const Uintptr const UnsafePointer const internal/reflectlite.Interface const internal/reflectlite.Ptr const internal/reflectlite.Slice const internal/reflectlite.String const internal/reflectlite.Struct
// internal type representing a hash bucket // size of bucket Elem *Type Flags uint32 function for hashing keys (ptr to key, seed) -> hash Key *Type // size of key slot Type Type // alignment of variable with this type function for comparing objects of this type (ptr to object A, ptr to object B) -> ==? // alignment of struct field with this type GCData stores the GC type data for the garbage collector. If the KindGCProg bit is set in kind, GCData is a GC program. Otherwise it is a ptrmask bitmap. See mbitmap.go for details. // hash of type; avoids computation in hash tables // enumeration for C // number of (prefix) bytes in the type that can contain pointers // type for pointer to this type, may be zero Type.Size_ uintptr // string form // extra type information flags // size of elem slot Align returns the alignment of data with type t. ArrayType returns t cast to a *ArrayType, or nil if its tag does not match. ChanDir returns the direction of t if t is a channel type, otherwise InvalidDir (0). (*MapType) Common() *Type (*MapType) ExportedMethods() []Method (*MapType) FieldAlign() int FuncType returns t cast to a *FuncType, or nil if its tag does not match. (*MapType) GcSlice(begin, end uintptr) []byte (*MapType) HasName() bool (*MapType) HashMightPanic() bool IfaceIndir reports whether t is stored indirectly in an interface value. (*MapType) IndirectElem() bool Note: flag values must match those used in the TMAP case in ../cmd/compile/internal/reflectdata/reflect.go:writeType. InterfaceType returns t cast to a *InterfaceType, or nil if its tag does not match. isDirectIface reports whether t is stored directly in an interface value. (*MapType) Kind() Kind Len returns the length of t if t is an array type, otherwise 0 MapType returns t cast to a *MapType, or nil if its tag does not match. (*MapType) NeedKeyUpdate() bool (*MapType) NumMethod() int (*MapType) Pointers() bool (*MapType) ReflexiveKey() bool Size returns the size of data with type t. StructType returns t cast to a *StructType, or nil if its tag does not match. Uncommon returns a pointer to T's "uncommon" data if there is any, otherwise nil func (*Type).MapType() *MapType
Method on non-interface type // fn used in interface call (one-word receiver) // method type (without receiver) // name of method // fn used for normal method call func (*Type).ExportedMethods() []Method func (*UncommonType).ExportedMethods() []Method func (*UncommonType).Methods() []Method
Bytes *byte Data does pointer arithmetic on n's Bytes, and that arithmetic is asserted to be safe because the runtime made the call (other packages use DataChecked) DataChecked does pointer arithmetic on n's Bytes, and that arithmetic is asserted to be safe for the reason in whySafe (which can appear in a backtrace, etc.) HasTag returns true iff there is tag data following this name IsBlank indicates whether n is "_". IsEmbedded returns true iff n is embedded (an anonymous field). IsExported returns "is n exported?" Name returns the tag string for n, or empty if there is none. ReadVarint parses a varint as encoded by encoding/binary. It returns the number of encoded bytes and the encoded value. Tag returns the tag string for n, or empty if there is none. func NewName(n, tag string, exported, embedded bool) Name
NameOff is the offset to a name from moduledata.types. See resolveNameOff in runtime.
Offset is for computing offsets of type data structures at compile/link time; the target platform may not be the host platform. Its state includes the current offset, necessary alignment for the sequence of types, and the size of pointers and alignment of slices, interfaces, and strings (this is for tearing- resistant access to these types, if/when that is supported). Align returns the offset obtained by aligning offset to a multiple of a. a must be a power of two. D16 returns the offset obtained by appending a 16-bit field to o. D32 returns the offset obtained by appending a 32-bit field to o. D64 returns the offset obtained by appending a 64-bit field to o. D8 returns the offset obtained by appending an 8-bit field to o. Interface returns the offset obtained by appending an interface field to o. Offset returns the struct-aligned offset (size) of o. This is at least as large as the current internal offset; it may be larger. D64 returns the offset obtained by appending a pointer field to o. ( Offset) PlusUncommon() Offset Slice returns the offset obtained by appending a slice field to o. String returns the offset obtained by appending a string field to o. func CommonOffset(ptrSize int, twoWordAlignSlices bool) Offset func InitializedOffset(off int, align uint8, ptrSize uint8, twoWordAlignSlices bool) Offset func NewOffset(ptrSize uint8, twoWordAlignSlices bool) Offset func Offset.Align(a uint8) Offset func Offset.D16() Offset func Offset.D32() Offset func Offset.D64() Offset func Offset.D8() Offset func Offset.Interface() Offset func Offset.P() Offset func Offset.PlusUncommon() Offset func Offset.Slice() Offset func Offset.String() Offset
// slice element type Type Type // alignment of variable with this type function for comparing objects of this type (ptr to object A, ptr to object B) -> ==? // alignment of struct field with this type GCData stores the GC type data for the garbage collector. If the KindGCProg bit is set in kind, GCData is a GC program. Otherwise it is a ptrmask bitmap. See mbitmap.go for details. // hash of type; avoids computation in hash tables // enumeration for C // number of (prefix) bytes in the type that can contain pointers // type for pointer to this type, may be zero Type.Size_ uintptr // string form // extra type information flags Align returns the alignment of data with type t. ArrayType returns t cast to a *ArrayType, or nil if its tag does not match. ChanDir returns the direction of t if t is a channel type, otherwise InvalidDir (0). (*PtrType) Common() *Type (*PtrType) ExportedMethods() []Method (*PtrType) FieldAlign() int FuncType returns t cast to a *FuncType, or nil if its tag does not match. (*PtrType) GcSlice(begin, end uintptr) []byte (*PtrType) HasName() bool IfaceIndir reports whether t is stored indirectly in an interface value. InterfaceType returns t cast to a *InterfaceType, or nil if its tag does not match. isDirectIface reports whether t is stored directly in an interface value. (*PtrType) Key() *Type (*PtrType) Kind() Kind Len returns the length of t if t is an array type, otherwise 0 MapType returns t cast to a *MapType, or nil if its tag does not match. (*PtrType) NumMethod() int (*PtrType) Pointers() bool Size returns the size of data with type t. StructType returns t cast to a *StructType, or nil if its tag does not match. Uncommon returns a pointer to T's "uncommon" data if there is any, otherwise nil
RegArgs is a struct that has space for each argument and return value register on the current architecture. Assembly code knows the layout of the first two fields of RegArgs. RegArgs also contains additional space to hold pointers when it may not be safe to keep them only in the integer register space otherwise. // untyped float registers Values in these slots should be precisely the bit-by-bit representation of how they would appear in a register. This means that on big endian arches, integer values should be in the top bits of the slot. Floats are usually just directly represented, but some architectures treat narrow width floating point values specially (e.g. they're promoted first, or they need to be NaN-boxed). // untyped integer registers Ptrs is a space that duplicates Ints but with pointer type, used to make pointers passed or returned in registers visible to the GC by making the type unsafe.Pointer. ReturnIsPtr is a bitmap that indicates which registers contain or will contain pointers on the return path from a reflectcall. The i'th bit indicates whether the i'th register contains or will contain a valid Go pointer. (*RegArgs) Dump() IntRegArgAddr returns a pointer inside of r.Ints[reg] that is appropriately offset for an argument of size argSize. argSize must be non-zero, fit in a register, and a power-of-two. This method is a helper for dealing with the endianness of different CPU architectures, since sub-word-sized arguments in big endian architectures need to be "aligned" to the upper edge of the register to be interpreted by the CPU correctly.
// slice element type Type Type // alignment of variable with this type function for comparing objects of this type (ptr to object A, ptr to object B) -> ==? // alignment of struct field with this type GCData stores the GC type data for the garbage collector. If the KindGCProg bit is set in kind, GCData is a GC program. Otherwise it is a ptrmask bitmap. See mbitmap.go for details. // hash of type; avoids computation in hash tables // enumeration for C // number of (prefix) bytes in the type that can contain pointers // type for pointer to this type, may be zero Type.Size_ uintptr // string form // extra type information flags Align returns the alignment of data with type t. ArrayType returns t cast to a *ArrayType, or nil if its tag does not match. ChanDir returns the direction of t if t is a channel type, otherwise InvalidDir (0). (*SliceType) Common() *Type (*SliceType) ExportedMethods() []Method (*SliceType) FieldAlign() int FuncType returns t cast to a *FuncType, or nil if its tag does not match. (*SliceType) GcSlice(begin, end uintptr) []byte (*SliceType) HasName() bool IfaceIndir reports whether t is stored indirectly in an interface value. InterfaceType returns t cast to a *InterfaceType, or nil if its tag does not match. isDirectIface reports whether t is stored directly in an interface value. (*SliceType) Key() *Type (*SliceType) Kind() Kind Len returns the length of t if t is an array type, otherwise 0 MapType returns t cast to a *MapType, or nil if its tag does not match. (*SliceType) NumMethod() int (*SliceType) Pointers() bool Size returns the size of data with type t. StructType returns t cast to a *StructType, or nil if its tag does not match. Uncommon returns a pointer to T's "uncommon" data if there is any, otherwise nil
// name is always non-empty // byte offset of field // type of field (*StructField) Embedded() bool
Fields []StructField PkgPath Name Type Type // alignment of variable with this type function for comparing objects of this type (ptr to object A, ptr to object B) -> ==? // alignment of struct field with this type GCData stores the GC type data for the garbage collector. If the KindGCProg bit is set in kind, GCData is a GC program. Otherwise it is a ptrmask bitmap. See mbitmap.go for details. // hash of type; avoids computation in hash tables // enumeration for C // number of (prefix) bytes in the type that can contain pointers // type for pointer to this type, may be zero Type.Size_ uintptr // string form // extra type information flags Align returns the alignment of data with type t. ArrayType returns t cast to a *ArrayType, or nil if its tag does not match. ChanDir returns the direction of t if t is a channel type, otherwise InvalidDir (0). (*StructType) Common() *Type Elem returns the element type for t if t is an array, channel, map, pointer, or slice, otherwise nil. (*StructType) ExportedMethods() []Method (*StructType) FieldAlign() int FuncType returns t cast to a *FuncType, or nil if its tag does not match. (*StructType) GcSlice(begin, end uintptr) []byte (*StructType) HasName() bool IfaceIndir reports whether t is stored indirectly in an interface value. InterfaceType returns t cast to a *InterfaceType, or nil if its tag does not match. isDirectIface reports whether t is stored directly in an interface value. (*StructType) Key() *Type (*StructType) Kind() Kind Len returns the length of t if t is an array type, otherwise 0 MapType returns t cast to a *MapType, or nil if its tag does not match. (*StructType) NumMethod() int (*StructType) Pointers() bool Size returns the size of data with type t. StructType returns t cast to a *StructType, or nil if its tag does not match. Uncommon returns a pointer to T's "uncommon" data if there is any, otherwise nil func (*Type).StructType() *StructType
TextOff is an offset from the top of a text section. See (rtype).textOff in runtime.
TFlag is used by a Type to signal what extra type information is available in the memory directly following the Type value. const TFlagExtraStar const TFlagNamed const TFlagRegularMemory const TFlagUncommon
Type is the runtime representation of a Go type. Type is also referenced implicitly (in the form of expressions involving constants and arch.PtrSize) in cmd/compile/internal/reflectdata/reflect.go and cmd/link/internal/ld/decodesym.go (e.g. data[2*arch.PtrSize+4] references the TFlag field) unsafe.OffsetOf(Type{}.TFlag) cannot be used directly in those places because it varies with cross compilation and experiments. // alignment of variable with this type function for comparing objects of this type (ptr to object A, ptr to object B) -> ==? // alignment of struct field with this type GCData stores the GC type data for the garbage collector. If the KindGCProg bit is set in kind, GCData is a GC program. Otherwise it is a ptrmask bitmap. See mbitmap.go for details. // hash of type; avoids computation in hash tables // enumeration for C // number of (prefix) bytes in the type that can contain pointers // type for pointer to this type, may be zero Size_ uintptr // string form // extra type information flags Align returns the alignment of data with type t. ArrayType returns t cast to a *ArrayType, or nil if its tag does not match. ChanDir returns the direction of t if t is a channel type, otherwise InvalidDir (0). (*Type) Common() *Type Elem returns the element type for t if t is an array, channel, map, pointer, or slice, otherwise nil. (*Type) ExportedMethods() []Method (*Type) FieldAlign() int FuncType returns t cast to a *FuncType, or nil if its tag does not match. (*Type) GcSlice(begin, end uintptr) []byte (*Type) HasName() bool IfaceIndir reports whether t is stored indirectly in an interface value. InterfaceType returns t cast to a *InterfaceType, or nil if its tag does not match. isDirectIface reports whether t is stored directly in an interface value. (*Type) Key() *Type (*Type) Kind() Kind Len returns the length of t if t is an array type, otherwise 0 MapType returns t cast to a *MapType, or nil if its tag does not match. (*Type) NumMethod() int (*Type) Pointers() bool Size returns the size of data with type t. StructType returns t cast to a *StructType, or nil if its tag does not match. Uncommon returns a pointer to T's "uncommon" data if there is any, otherwise nil func (*FuncType).In(i int) *Type func (*FuncType).InSlice() []*Type func (*FuncType).Out(i int) *Type func (*FuncType).OutSlice() []*Type func (*Type).Common() *Type func (*Type).Elem() *Type func (*Type).Key() *Type
TypeOff is the offset to a type from moduledata.types. See resolveTypeOff in runtime.
UncommonType is present only for defined types or types with methods (if T is a defined type, the uncommonTypes for T and *T have methods). Using a pointer to this struct reduces the overall size required to describe a non-defined type with no methods. // number of methods // offset from this uncommontype to [mcount]Method // import path; empty for built-in types like int, string // number of exported methods (*UncommonType) ExportedMethods() []Method (*UncommonType) Methods() []Method func (*Type).Uncommon() *UncommonType
Package-Level Functions (total 19, in which 14 are exported)
CommonOffset returns the Offset to the data after the common portion of type data structures.
CommonSize returns sizeof(Type) for a compilation target with a given ptrSize
FuncPCABI0 returns the entry PC of the function f, which must be a direct reference of a function defined as ABI0. Otherwise it is a compile-time error. Implemented as a compile intrinsic.
FuncPCABIInternal returns the entry PC of the function f. If f is a direct reference of a function, it must be defined as ABIInternal. Otherwise it is a compile-time error. If f is not a direct reference of a defined function, it assumes that f is a func value. Otherwise the behavior is undefined. Implemented as a compile intrinsic.
IMethodSize returns sizeof(IMethod) for a compilation target with a given ptrSize
InitializedOffset returns a new Offset with specified offset, alignment, pointer size, and slice alignment.
KindOff returns the offset of Type.Kind_ for a compilation target with a given ptrSize
func NewName(n, tag string, exported, embedded bool) Name
NewOffset returns a new Offset with offset 0 and alignment 1.
PtrBytes returns the offset of Type.PtrBytes for a compilation target with a given ptrSize
SizeOff returns the offset of Type.Size_ for a compilation target with a given ptrSize
StructFieldSize returns sizeof(StructField) for a compilation target with a given ptrSize
TFlagOff returns the offset of Type.TFlag for a compilation target with a given ptrSize
UncommonSize returns sizeof(UncommonType). This currently does not depend on ptrSize. This exported function is in an internal package, so it may change to depend on ptrSize in the future.
Package-Level Variables (only one, which is unexported)
Package-Level Constants (total 91, all are exported)
ArgsSizeUnknown is set in Func.argsize to mark all functions whose argument size is unknown (C vararg functions, and assembly code without an explicit specification). This value is generated by the compiler, assembler, or linker.
const BothDir ChanDir = 3 // chan
We use SSE2 registers which support 64-bit float operations.
X0 -> X14.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
FuncFlagAsm indicates that a function was implemented in assembly.
FuncFlagSPWrite indicates a function that writes an arbitrary value to SP (any write other than adding or subtracting a constant amount). The traceback routines cannot encode such changes into the pcsp tables, so the function traceback cannot safely unwind past SPWrite functions. Stopping at an SPWrite function is considered to be an incomplete unwinding of the stack. In certain contexts (in particular garbage collector stack scans) that is a fatal error.
FuncFlagTopFrame indicates a function that appears at the top of its stack. The traceback routine stop at such a function and consider that a successful, complete traversal of the stack. Examples of TopFrame functions include goexit, which appears at the top of a user goroutine stack, and mstart, which appears at the top of a system goroutine stack.
const FuncIDNormal FuncID = 0 // not a special function
const FuncIDWrapper FuncID = 21 // any autogenerated code (hash/eq algorithms, method wrappers, etc.)
RAX, RBX, RCX, RDI, RSI, R8, R9, R10, R11.
TODO (khr, drchase) why aren't these in TFlag? Investigate, fix if possible.
const KindGCProg = 64 // Type.gc points to GC program
const Map Kind = 21
Map constants common to several packages runtime/runtime-gdb.py:MapTypePrinter contains its own copy
Map constants common to several packages runtime/runtime-gdb.py:MapTypePrinter contains its own copy
Map constants common to several packages runtime/runtime-gdb.py:MapTypePrinter contains its own copy
Map constants common to several packages runtime/runtime-gdb.py:MapTypePrinter contains its own copy
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
IDs for PCDATA and FUNCDATA tables in Go binaries. These must agree with ../../../runtime/funcdata.h.
const RecvDir ChanDir = 1 // <-chan
const SendDir ChanDir = 2 // chan<-
Functions that need frames <= StackBig can assume that neither SP-framesize nor stackGuard-StackSmall will underflow, and thus use a more efficient check. In order to ensure this, StackBig must be <= the size of the unmapped space at zero.
StackNosplitBase is the base maximum number of bytes that a chain of NOSPLIT functions can use. This value must be multiplied by the stack guard multiplier, so do not use it directly. See runtime/stack.go:stackNosplit and cmd/internal/objabi/stack.go:StackNosplit.
After a stack split check the SP is allowed to be StackSmall bytes below the stack guard. Functions that need frames <= StackSmall can perform the stack check using a single comparison directly between the stack guard and the SP because we ensure that StackSmall bytes of stack space are available beyond the stack guard.
TFlagExtraStar means the name in the str field has an extraneous '*' prefix. This is because for most types T in a program, the type *T also exists and reusing the str data saves binary size.
TFlagNamed means the type has a name.
TFlagRegularMemory means that equal and hash functions can treat this type as a single region of t.size bytes.
TFlagUncommon means that there is a data with a type, UncommonType, just beyond the shared-per-type common data. That is, the data for struct types will store their UncommonType at one offset, the data for interface types will store their UncommonType at a different offset. UncommonType is always accessed via a pointer that is computed using trust-us-we-are-the-implementors pointer arithmetic. For example, if t.Kind() == Struct and t.tflag&TFlagUncommon != 0, then t has UncommonType data and it can be accessed as: type structTypeUncommon struct { structType u UncommonType } u := &(*structTypeUncommon)(unsafe.Pointer(t)).u
UnsafePointRestart1(2) apply on a sequence of instructions, within which if an async preemption happens, we should back off the PC to the start of the sequence when resuming. We need two so we can distinguish the start/end of the sequence in case that two sequences are next to each other.
Special values for the PCDATA_UnsafePoint table.
Like UnsafePointRestart1, but back to function entry if async preempted.
Special values for the PCDATA_UnsafePoint table.
Special values for the PCDATA_UnsafePoint table.