]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: small cleanups for structargs
authorMatthew Dempsky <mdempsky@google.com>
Wed, 9 Mar 2016 01:30:51 +0000 (17:30 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Wed, 9 Mar 2016 02:03:36 +0000 (02:03 +0000)
Suggested by Dave Cheney in golang.org/cl/20405.

Change-Id: I581c11ae80034cb6ebef3de976e8ae9484472322
Reviewed-on: https://go-review.googlesource.com/20453
Reviewed-by: Dave Cheney <dave@cheney.net>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/compile/internal/gc/subr.go

index b2647175cb4d614833ff54076d6e2168b5f92fe1..f075ee4293d4e74328e0da331c2a5bd3176ec5db 100644 (file)
@@ -1877,25 +1877,20 @@ func expandmeth(t *Type) {
 }
 
 // Given funarg struct list, return list of ODCLFIELD Node fn args.
-func structargs(tl **Type, mustname int) []*Node {
-       var a *Node
-       var n *Node
-       var buf string
-
+func structargs(tl *Type, mustname bool) []*Node {
        var args []*Node
        gen := 0
-       for t, it := IterFields(*tl); t != nil; t = it.Next() {
-               n = nil
-               if mustname != 0 && (t.Sym == nil || t.Sym.Name == "_") {
+       for t, it := IterFields(tl); t != nil; t = it.Next() {
+               var n *Node
+               if mustname && (t.Sym == nil || t.Sym.Name == "_") {
                        // invent a name so that we can refer to it in the trampoline
-                       buf = fmt.Sprintf(".anon%d", gen)
+                       buf := fmt.Sprintf(".anon%d", gen)
                        gen++
-
                        n = newname(Lookup(buf))
                } else if t.Sym != nil {
                        n = newname(t.Sym)
                }
-               a = Nod(ODCLFIELD, n, typenod(t.Type))
+               a := Nod(ODCLFIELD, n, typenod(t.Type))
                a.Isddd = t.Isddd
                if n != nil {
                        n.Isddd = t.Isddd
@@ -1949,8 +1944,8 @@ func genwrapper(rcvr *Type, method *Type, newnam *Sym, iface int) {
 
        this := Nod(ODCLFIELD, newname(Lookup(".this")), typenod(rcvr))
        this.Left.Name.Param.Ntype = this.Right
-       in := structargs(method.Type.ParamsP(), 1)
-       out := structargs(method.Type.ResultsP(), 0)
+       in := structargs(method.Type.Params(), true)
+       out := structargs(method.Type.Results(), false)
 
        t := Nod(OTFUNC, nil, nil)
        l := []*Node{this}