package rttype

import "cmd/compile/internal/rttype"

Package rttype allows the compiler to share type information with the runtime. The shared type information is stored in internal/abi. This package translates those types from the host machine on which the compiler runs to the target machine on which the compiled program will run. In particular, this package handles layout differences between e.g. a 64 bit compiler and 32 bit target.

Index

Variables

var ArrayType *types.Type
var ChanType *types.Type
var FuncType *types.Type
var IMethod *types.Type

Types that are parts of the types above.

var ITab *types.Type

Interface tables (itabs)

var InterfaceSwitch *types.Type

Type switches and asserts

var InterfaceType *types.Type
var Method *types.Type
var OldMapType *types.Type
var PtrType *types.Type
var SliceType *types.Type
var StructField *types.Type
var StructType *types.Type
var SwissMapType *types.Type
var Type *types.Type

The type structures shared with the runtime.

var TypeAssert *types.Type
var UncommonType *types.Type

Functions

func Init

func Init()

Types

type ArrayCursor

type ArrayCursor struct {
	// contains filtered or unexported fields
}

func NewArrayCursor

func NewArrayCursor(lsym *obj.LSym, off int64, t *types.Type, n int) ArrayCursor

NewArrayCursor returns a cursor starting at lsym+off and having n copies of type t.

func (ArrayCursor) Elem

func (a ArrayCursor) Elem(i int) Cursor

Elem selects element i of the array pointed to by c.

type Cursor

type Cursor struct {
	// contains filtered or unexported fields
}

A Cursor represents a typed location inside a static variable where we are going to write.

func NewCursor

func NewCursor(lsym *obj.LSym, off int64, t *types.Type) Cursor

NewCursor returns a cursor starting at lsym+off and having type t.

func (Cursor) Elem

func (c Cursor) Elem(i int64) Cursor

func (Cursor) Field

func (c Cursor) Field(name string) Cursor

Field selects the field with the given name from the struct pointed to by c.

func (Cursor) ModifyArray

func (c Cursor) ModifyArray(n int) (ArrayCursor, int64)

ModifyArray converts a cursor pointing at a type [k]T to a cursor pointing at a type [n]T. Also returns the size delta, aka (n-k)*sizeof(T).

func (Cursor) Reloc

func (c Cursor) Reloc(rel obj.Reloc)

Reloc adds a relocation from the current cursor position. Reloc fills in Off and Siz fields. Caller should fill in the rest (Type, others).

func (Cursor) WriteBool

func (c Cursor) WriteBool(val bool)

func (Cursor) WriteInt

func (c Cursor) WriteInt(val int64)

func (Cursor) WriteInt32

func (c Cursor) WriteInt32(val int32)

func (Cursor) WritePtr

func (c Cursor) WritePtr(target *obj.LSym)

WritePtr writes a pointer "target" to the component at the location specified by c.

func (Cursor) WritePtrWeak

func (c Cursor) WritePtrWeak(target *obj.LSym)

func (Cursor) WriteSlice

func (c Cursor) WriteSlice(target *obj.LSym, off, len, cap int64)

WriteSlice writes a slice header to c. The pointer is target+off, the len and cap fields are given.

func (Cursor) WriteSymPtrOff

func (c Cursor) WriteSymPtrOff(target *obj.LSym, weak bool)

WriteSymPtrOff writes a "pointer" to the given symbol. The symbol is encoded as a uint32 offset from the start of the section.

func (Cursor) WriteUint16

func (c Cursor) WriteUint16(val uint16)

func (Cursor) WriteUint32

func (c Cursor) WriteUint32(val uint32)

func (Cursor) WriteUint8

func (c Cursor) WriteUint8(val uint8)

func (Cursor) WriteUintptr

func (c Cursor) WriteUintptr(val uint64)

Source Files

rttype.go

Version
v1.24.0 (latest)
Published
Feb 10, 2025
Platform
linux/amd64
Imports
6 packages
Last checked
1 minute ago

Tools for package owners.