]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: add Nodes.Prepend helper method
authorMatthew Dempsky <mdempsky@google.com>
Wed, 14 Sep 2016 20:19:20 +0000 (13:19 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Wed, 14 Sep 2016 20:46:49 +0000 (20:46 +0000)
Prepared with gofmt -r.

Change-Id: Ib9f224cc20353acd9c5850dead1a2d32ca5427d3
Reviewed-on: https://go-review.googlesource.com/29165
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/compile/internal/gc/order.go
src/cmd/compile/internal/gc/pgen.go
src/cmd/compile/internal/gc/racewalk.go
src/cmd/compile/internal/gc/range.go
src/cmd/compile/internal/gc/select.go
src/cmd/compile/internal/gc/subr.go
src/cmd/compile/internal/gc/swt.go
src/cmd/compile/internal/gc/syntax.go
src/cmd/compile/internal/gc/walk.go

index 5b01d4b9051dd42af0a1bb01dc25fb2d344b19db..2512e4cedf2940595eb433b4d2721aaf1fa93d13 100644 (file)
@@ -676,7 +676,7 @@ func orderstmt(n *Node, order *Order) {
                n.Left = orderexprinplace(n.Left, order)
                var l []*Node
                cleantempnopop(t, order, &l)
-               n.Nbody.Set(append(l, n.Nbody.Slice()...))
+               n.Nbody.Prepend(l...)
                orderblockNodes(&n.Nbody)
                n.Right = orderstmtinplace(n.Right)
                order.out = append(order.out, n)
@@ -690,10 +690,10 @@ func orderstmt(n *Node, order *Order) {
                n.Left = orderexprinplace(n.Left, order)
                var l []*Node
                cleantempnopop(t, order, &l)
-               n.Nbody.Set(append(l, n.Nbody.Slice()...))
+               n.Nbody.Prepend(l...)
                l = nil
                cleantempnopop(t, order, &l)
-               n.Rlist.Set(append(l, n.Rlist.Slice()...))
+               n.Rlist.Prepend(l...)
                poptemp(t, order)
                orderblockNodes(&n.Nbody)
                n.Rlist.Set(orderblock(n.Rlist))
@@ -917,7 +917,7 @@ func orderstmt(n *Node, order *Order) {
                for _, n3 := range n.List.Slice() {
                        s := n3.Ninit.Slice()
                        cleantempnopop(t, order, &s)
-                       n3.Nbody.Set(append(s, n3.Nbody.Slice()...))
+                       n3.Nbody.Prepend(s...)
                        n3.Ninit.Set(nil)
                }
 
@@ -1110,7 +1110,7 @@ func orderexpr(n *Node, order *Order, lhs *Node) *Node {
                var s []*Node
 
                cleantempnopop(mark, order, &s)
-               n.Right.Ninit.Set(append(s, n.Right.Ninit.Slice()...))
+               n.Right.Ninit.Prepend(s...)
                n.Right = orderexprinplace(n.Right, order)
 
        case OCALLFUNC,
index 6bb0fd7f7b692c7a617175fc477d2095b8c761eb..16e62a390be067a62a6ec6bbf21174f8591c1276 100644 (file)
@@ -376,7 +376,7 @@ func compile(fn *Node) {
                        if t.Nname != nil {
                                n := Nod(OAS, t.Nname, nil)
                                n = typecheck(n, Etop)
-                               Curfn.Nbody.Set(append([]*Node{n}, Curfn.Nbody.Slice()...))
+                               Curfn.Nbody.Prepend(n)
                        }
                }
        }
index 07733da5171aacb88dba8ef0cd645e740d5f0b12..747f359c02de9c91858478ac453e33d9251d30e0 100644 (file)
@@ -69,7 +69,7 @@ func instrument(fn *Node) {
                nodpc.Type = Types[TUINTPTR]
                nodpc.Xoffset = int64(-Widthptr)
                nd := mkcall("racefuncenter", nil, nil, &nodpc)
-               fn.Func.Enter.Set(append([]*Node{nd}, fn.Func.Enter.Slice()...))
+               fn.Func.Enter.Prepend(nd)
                nd = mkcall("racefuncexit", nil, nil)
                fn.Func.Exit.Append(nd)
        }
index fd74dd9e33fcb84d38f90d1d821ff3d32ffb566a..be93a30f1f0c80a9f6ab0435c3c7927fc97e6719 100644 (file)
@@ -354,7 +354,7 @@ func walkrange(n *Node) {
        n.Left = typecheck(n.Left, Erv)
        n.Right = typecheck(n.Right, Etop)
        typecheckslice(body, Etop)
-       n.Nbody.Set(append(body, n.Nbody.Slice()...))
+       n.Nbody.Prepend(body...)
        n = walkstmt(n)
 
        lineno = lno
index 120a9b8cf17259663a6f6bca9cb4adcab201c05d..954873288169a86f8c17409cf6ef6c1cfd3c8842 100644 (file)
@@ -143,7 +143,7 @@ func walkselect(sel *Node) {
                                }
 
                                n.Op = OAS2
-                               n.List.Set(append([]*Node{n.Left}, n.List.Slice()...))
+                               n.List.Prepend(n.Left)
                                n.Rlist.Set1(n.Right)
                                n.Right = nil
                                n.Left = nil
index 9992f49b4b51550ecc58cf4150a149de03d60fb0..9d89fad25ff439c214a43ff78ba61552a29d3ad3 100644 (file)
@@ -2198,7 +2198,7 @@ func addinit(n *Node, init []*Node) *Node {
                n.Typecheck = 1
        }
 
-       n.Ninit.Set(append(init, n.Ninit.Slice()...))
+       n.Ninit.Prepend(init...)
        n.Ullman = UINF
        return n
 }
index bfe5c1fb23fe2d991bb670c5d0a6d3ff226de1f4..bfbec29250edd369e9ae971973bbf339a23b2921 100644 (file)
@@ -281,7 +281,7 @@ func (s *exprSwitch) walk(sw *Node) {
        // handle default case
        if nerrors == 0 {
                cas = append(cas, clauses.defjmp)
-               sw.Nbody.Set(append(cas, sw.Nbody.Slice()...))
+               sw.Nbody.Prepend(cas...)
                walkstmtlist(sw.Nbody.Slice())
        }
 }
@@ -800,7 +800,7 @@ func (s *typeSwitch) walk(sw *Node) {
        // handle default case
        if nerrors == 0 {
                cas = append(cas, def)
-               sw.Nbody.Set(append(cas, sw.Nbody.Slice()...))
+               sw.Nbody.Prepend(cas...)
                sw.List.Set(nil)
                walkstmtlist(sw.Nbody.Slice())
        }
index 90be65e6a94483b98d36999f233d611c558de741..a1cccc49749ba3ab286ecc3e595a0d1bd4623c24 100644 (file)
@@ -583,15 +583,29 @@ func (n Nodes) Addr(i int) **Node {
 // Append appends entries to Nodes.
 // If a slice is passed in, this will take ownership of it.
 func (n *Nodes) Append(a ...*Node) {
+       if len(a) == 0 {
+               return
+       }
        if n.slice == nil {
-               if len(a) > 0 {
-                       n.slice = &a
-               }
+               n.slice = &a
        } else {
                *n.slice = append(*n.slice, a...)
        }
 }
 
+// Prepend prepends entries to Nodes.
+// If a slice is passed in, this will take ownership of it.
+func (n *Nodes) Prepend(a ...*Node) {
+       if len(a) == 0 {
+               return
+       }
+       if n.slice == nil {
+               n.slice = &a
+       } else {
+               *n.slice = append(a, *n.slice...)
+       }
+}
+
 // AppendNodes appends the contents of *n2 to n, then clears n2.
 func (n *Nodes) AppendNodes(n2 *Nodes) {
        switch {
index cb60115662325db013681985b391c9bcd2eb5b4a..5810268574bbb034f6ffe8f37e1d868e287c8ed5 100644 (file)
@@ -669,7 +669,7 @@ opswitch:
                        // transformclosure already did all preparation work.
 
                        // Prepend captured variables to argument list.
-                       n.List.Set(append(n.Left.Func.Enter.Slice(), n.List.Slice()...))
+                       n.List.Prepend(n.Left.Func.Enter.Slice()...)
 
                        n.Left.Func.Enter.Set(nil)