go/src/cmd/compile/internal/ssa/stackalloc.go

type stackAllocState

func newStackAllocState(f *Func) *stackAllocState {}

func putStackAllocState(s *stackAllocState) {}

type stackValState

// stackalloc allocates storage in the stack frame for
// all Values that did not get a register.
// Returns a map from block ID to the stack values live at the end of that block.
func stackalloc(f *Func, spillLive [][]ID) [][]ID {}

func (s *stackAllocState) init(f *Func, spillLive [][]ID) {}

func (s *stackAllocState) stackalloc() {}

// computeLive computes a map from block ID to a list of
// stack-slot-needing value IDs live at the end of that block.
// TODO: this could be quadratic if lots of variables are live across lots of
// basic blocks. Figure out a way to make this function (or, more precisely, the user
// of this function) require only linear size & time.
func (s *stackAllocState) computeLive(spillLive [][]ID) {}

func (f *Func) getHome(vid ID) Location {}

func (f *Func) setHome(v *Value, loc Location) {}

func (s *stackAllocState) buildInterferenceGraph() {}

func hasAnyArgOp(v *Value) bool {}