From 1911087dee1a6544067e94cbf430f1fd6e20cf23 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Wed, 22 Mar 2017 20:28:12 -0700 Subject: [PATCH] cmd/compile: eliminate all references to Curfn in liveness Updates #15756 Change-Id: I5ad87ef44b8ee48e1294820e0b1ab0ec07c480eb Reviewed-on: https://go-review.googlesource.com/38590 Run-TryBot: Josh Bleecher Snyder TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick Reviewed-by: Matthew Dempsky --- src/cmd/compile/internal/gc/plive.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/cmd/compile/internal/gc/plive.go b/src/cmd/compile/internal/gc/plive.go index c38d2a45bf1..51cb3fa588a 100644 --- a/src/cmd/compile/internal/gc/plive.go +++ b/src/cmd/compile/internal/gc/plive.go @@ -99,10 +99,10 @@ func getvariables(fn *Node) []*Node { // already, but for some compiler-introduced names it seems not to be, // so fix that here. // Later, when we want to find the index of a node in the variables list, - // we will check that n.Curfn == Curfn and n.Opt() != nil. Then n.Opt().(int32) + // we will check that n.Curfn == lv.fn and n.Opt() != nil. Then n.Opt().(int32) // is the index in the variables list. n.SetOpt(nil) - n.Name.Curfn = Curfn + n.Name.Curfn = fn } if livenessShouldTrack(n) { @@ -194,7 +194,7 @@ func (lv *Liveness) valueEffects(v *ssa.Value) (pos int32, effect liveEffect) { } } - pos = liveIndex(n, lv.vars) + pos = lv.liveIndex(n) if pos < 0 { return -1, 0 } @@ -268,8 +268,8 @@ func affectedNode(v *ssa.Value) (*Node, ssa.SymEffect) { // liveIndex returns the index of n in the set of tracked vars. // If n is not a tracked var, liveIndex returns -1. // If n is not a tracked var but should be tracked, liveIndex crashes. -func liveIndex(n *Node, vars []*Node) int32 { - if n == nil || n.Name.Curfn != Curfn || !livenessShouldTrack(n) { +func (lv *Liveness) liveIndex(n *Node) int32 { + if n == nil || n.Name.Curfn != lv.fn || !livenessShouldTrack(n) { return -1 } @@ -277,7 +277,7 @@ func liveIndex(n *Node, vars []*Node) int32 { if !ok { Fatalf("lost track of variable in liveness: %v (%p, %p)", n, n, n.Orig) } - if pos >= int32(len(vars)) || vars[pos] != n { + if pos >= int32(len(lv.vars)) || lv.vars[pos] != n { Fatalf("bad bookkeeping in liveness: %v (%p, %p)", n, n, n.Orig) } return pos @@ -666,7 +666,7 @@ func livenessepilogue(lv *Liveness) { if !n.Name.Needzero() { n.Name.SetNeedzero(true) if debuglive >= 1 { - Warnl(v.Pos, "%v: %L is ambiguously live", Curfn.Func.Nname, n) + Warnl(v.Pos, "%v: %L is ambiguously live", lv.fn.Func.Nname, n) } } } @@ -732,7 +732,7 @@ func livenessepilogue(lv *Liveness) { // input parameters. for j, n := range lv.vars { if n.Class != PPARAM && lv.livevars[0].Get(int32(j)) { - Fatalf("internal error: %v %L recorded as live on entry", Curfn.Func.Nname, n) + Fatalf("internal error: %v %L recorded as live on entry", lv.fn.Func.Nname, n) } } } @@ -867,21 +867,21 @@ Outer: } func (lv *Liveness) showlive(v *ssa.Value, live bvec) { - if debuglive == 0 || Curfn.Func.Nname.Sym.Name == "init" || strings.HasPrefix(Curfn.Func.Nname.Sym.Name, ".") { + if debuglive == 0 || lv.fn.Func.Nname.Sym.Name == "init" || strings.HasPrefix(lv.fn.Func.Nname.Sym.Name, ".") { return } if live.IsEmpty() { return } - pos := Curfn.Func.Nname.Pos + pos := lv.fn.Func.Nname.Pos if v != nil { pos = v.Pos } s := "live at " if v == nil { - s += fmt.Sprintf("entry to %s:", Curfn.Func.Nname.Sym.Name) + s += fmt.Sprintf("entry to %s:", lv.fn.Func.Nname.Sym.Name) } else if sym, ok := v.Aux.(*obj.LSym); ok { fn := sym.Name if pos := strings.Index(fn, "."); pos >= 0 { @@ -943,7 +943,7 @@ func (lv *Liveness) printeffect(printed bool, name string, pos int32, x bool) bo // This format synthesizes the information used during the multiple passes // into a single presentation. func livenessprintdebug(lv *Liveness) { - fmt.Printf("liveness: %s\n", Curfn.Func.Nname.Sym.Name) + fmt.Printf("liveness: %s\n", lv.fn.Func.Nname.Sym.Name) pcdata := 0 for i, b := range lv.f.Blocks { @@ -982,7 +982,7 @@ func livenessprintdebug(lv *Liveness) { if b == lv.f.Entry { live := lv.livevars[pcdata] - fmt.Printf("(%s) function entry\n", linestr(Curfn.Func.Nname.Pos)) + fmt.Printf("(%s) function entry\n", linestr(lv.fn.Func.Nname.Pos)) fmt.Printf("\tlive=") printed = false for j, n := range lv.vars {