func walkSwitch(sw *ir.SwitchStmt) { … }
func walkSwitchExpr(sw *ir.SwitchStmt) { … }
type exprSwitch …
type exprClause …
func (s *exprSwitch) Add(pos src.XPos, expr, rtype, jmp ir.Node) { … }
func (s *exprSwitch) Emit(out *ir.Nodes) { … }
func (s *exprSwitch) flush() { … }
func (s *exprSwitch) search(cc []exprClause, out *ir.Nodes) { … }
func (s *exprSwitch) tryJumpTable(cc []exprClause, out *ir.Nodes) bool { … }
func (c *exprClause) test(exprname ir.Node) ir.Node { … }
func allCaseExprsAreSideEffectFree(sw *ir.SwitchStmt) bool { … }
func endsInFallthrough(stmts []ir.Node) (bool, src.XPos) { … }
func walkSwitchType(sw *ir.SwitchStmt) { … }
var interfaceSwitchGen …
func typeHashFieldOf(pos src.XPos, itab *ir.UnaryExpr) *ir.SelectorExpr { … }
var (
rtypeHashField …
itabHashField …
)
type typeSwitch …
type typeClause …
func (s *typeSwitch) flush(cc []typeClause, compiled *ir.Nodes) { … }
func (s *typeSwitch) tryJumpTable(cc []typeClause, out *ir.Nodes) bool { … }
func binarySearch(n int, out *ir.Nodes, less func(i int) ir.Node, leaf func(i int, nif *ir.IfStmt)) { … }
func stringSearch(expr ir.Node, cc []exprClause, out *ir.Nodes) { … }