Documentation

Index

Constants

const (
	VectorOffsetMemoryAddr    = -4 * obj.Word
	VectorOffsetCurrentMemory = -3 * obj.Word
	VectorOffsetGrowMemory    = -2 * obj.Word
	VectorOffsetTrapHandler   = -1 * obj.Word
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Block

type Block struct {
	Suspension bool
	WeakDead   bool // Like deadend state, but must not affect portable ABI.
}

type BranchTable

type BranchTable struct {
	Addr       int32
	Targets    []*BranchTarget
	StackDepth int // -1 indicates common depth among all targets
}

type BranchTarget

type BranchTarget struct {
	Label      link.L
	StackDepth int
	ValueType  wa.Type
	FuncEnd    bool

	Block Block
}

type Breakpoint

type Breakpoint struct {
	Set bool // Set by the compiler if it implemented the breakpoint.
}

Breakpoint information, for debugger support.

type Debugger

type Debugger struct {
	// Breakpoints are WebAssembly code offsets.  They can be obtained from
	// DWARF debug info.
	Breakpoints map[uint32]Breakpoint

	Source     Teller
	CodeOffset int64
}

type Func

type Func struct {
	Prog // Initialized by GenProgram, preserved by GenFunction

	Regs regalloc.Allocator

	ResultType wa.Type
	LocalTypes []wa.Type
	NumParams  int
	NumLocals  int // The non-param ones

	Operands          []operand.O
	FrameBase         int // Number of (stack) operands belonging to parent blocks
	NumStableOperands int
	StackDepth        int // The dynamic entries after locals
	MaxStackDepth     int

	BranchTargets []*BranchTarget
	BranchTables  []BranchTable

	AtomicCallStubs bool
}

func (*Func) LocalOffset

func (f *Func) LocalOffset(index int) int32

func (*Func) MapCallAddr

func (f *Func) MapCallAddr(retAddr int32)

func (*Func) MapTrapAddr

func (f *Func) MapTrapAddr(retAddr int32)

func (*Func) StackValueConsumed

func (f *Func) StackValueConsumed()

StackValueConsumed updates the virtual stack pointer on behalf of MacroAssembler when it changes the physical stack pointer.

func (*Func) ValueBecameUnreachable

func (f *Func) ValueBecameUnreachable(x operand.O)

ValueBecameUnreachable keeps the state consistent when an operand will not be operated on (because it was popped on an unreachable code path).

type Prog

type Prog struct {
	Module                  *module.M
	Text                    code.Buf
	Map                     obj.ObjectMapper
	FuncLinks               []link.FuncL
	TrapLinks               [trap.NumTraps]link.L
	TrapLinkRewindSuspended [program.NumTrapLinkRewindSuspended]link.L
	TrapLinkTruncOverflow   [program.NumTrapLinkTruncOverflow]link.L
	LastCallAddr            int32 // Needed only by arm backend.

	ImportContext *module.Library // Set during import function generation.

	DebugMap obj.DebugObjectMapper
	Debugger Debugger
}

type Teller

type Teller interface {
	Tell() int64
}