// walkAll computes the minimal dereferences between all pairs of // locations. func (b *batch) walkAll() { … } // walkOne computes the minimal number of dereferences from root to // all other locations. func (b *batch) walkOne(root *location, walkgen uint32, enqueue func(*location)) { … } // explainPath prints an explanation of how src flows to the walk root. func (b *batch) explainPath(root, src *location) []*logopt.LoggedOpt { … } func (b *batch) explainFlow(pos string, dst, srcloc *location, derefs int, notes *note, explanation []*logopt.LoggedOpt) []*logopt.LoggedOpt { … } func (b *batch) explainLoc(l *location) string { … } // outlives reports whether values stored in l may survive beyond // other's lifetime if stack allocated. func (b *batch) outlives(l, other *location) bool { … } // containsClosure reports whether c is a closure contained within f. func containsClosure(f, c *ir.Func) bool { … }