# Functions
Compile compiles the expression expr into a list of instructions.
CompileAST compiles the expression t into a list of instructions.
CompileSet compiles the expression setting lhexpr to rhexpr into a list of instructions.
# Constants
Assignment is allowed.
runtime.debugPinner is available.
# Structs
AddrOf replaces the topmost stack variable v with &v.
Binary pops two variables from the stack, applies the specified binary operator to them and pushes the result back on the stack.
BoolToConst pops the topmost variable from the stack, which must be a boolean variable, and converts it to a constant.
BuiltinCall pops len(Args) argument from the stack, calls the specified builtin on them and pushes the result back on the stack.
CallInjectionComplete resumes target execution so that the injected call can run.
CallInjectionComplete2 if DoPinning was passed to CallInjectionComplete this will finish the call injection protocol and push the evaluation result on the stack.
CallInjectionCopyArg copies one argument for call injection.
CallInjectionSetTarget starts the call injection, after runtime.debugCallVn set up the stack for us, by copying the entry point of the function, setting the closure register and copying the receiver.
CallInjectionStart starts call injection by calling runtime.debugCallVn.
CallInjectionStartSpecial starts call injection for a function with a name and arguments known at compile time.
ConvertAllocToString pops two variables from the stack, a constant string and the return value of runtime.mallocgc (mallocv), copies the contents of the string at the address in mallocv and pushes on the stack a new string value that uses the backing storage of mallocv.
Index pops two variables, idx and v, and pushes v[idx].
Jump looks at the topmost stack variable and if it satisfies the condition specified by When it jumps to the stack machine instruction at Target+1.
PointerDeref replaces the topmost stack variable v with *v.
Pop removes the topmost variable from the stack.
PushConst pushes a constant on the stack.
PushCurg pushes the current goroutine on the stack.
PushDebugPinner pushes the debug pinner on the stack.
PushFrameoff pushes the frame offset for the current frame on the stack.
PushIdent pushes a local or global variable or a predefined identifier (true, false, etc) or the value of a register on the stack.
PushLen pushes the length of the variable at the top of the stack into the stack.
PushLocal pushes the local variable with the given name on the stack.
PushNil pushes an untyped nil on the stack.
PushPackageVarOrSelect pushes the value of Name.Sel on the stack, which could either be a global variable (with the package name specified), or a field of a local variable.
PushPinAddress pushes an address to pin on the stack (as an unsafe.Pointer) and removes it from the list of addresses to pin.
PushRangeParentOffset pushes the frame offset of the range-over-func closure body parent.
PushThreadID pushes the ID of the current thread on the stack.
Reslice implements a reslice operation.
Roll removes the n-th element of the stack and pushes it back in at the top.
Select replaces the topmost stack variable v with v.Name.
SetDebugPinner pops one variable from the stack and uses it as the saved debug pinner.
SetValue pops to variables from the stack, lhv and rhv, and sets lhv to rhv.
TypeAssert replaces the topmost stack variable v with v.(DwarfType).
TypeCast replaces the topmost stack variable v with (DwarfType)(v).
Unary applies the given unary operator to the topmost stack variable.
# Interfaces
Op is a stack machine opcode.