Skip to content

Commit fdef951

Browse files
committed
cmd/compile: make setting and accessing of node slice elements more uniform
Add Set3 function to complement existing Set1 and Set2 functions. Consistently use Set1, Set2 and Set3 for []*Node instead of Set where applicable. Add SetFirst and SetSecond for setting elements of []*Node to mirror First and Second for accessing elements in []*Node. Replace uses of Index by First and Second and SetIndex with SetFirst and SetSecond where applicable. Passes toolstash -cmp. Change-Id: I8255aae768cf245c8f93eec2e9efa05b8112b4e5 Reviewed-on: https://go-review.googlesource.com/37430 Run-TryBot: Martin Möhrmann <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Matthew Dempsky <[email protected]>
1 parent fb1f47a commit fdef951

File tree

8 files changed

+50
-33
lines changed

8 files changed

+50
-33
lines changed

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ func orderstmt(n *Node, order *Order) {
594594
r = okas(n.List.Second(), tmp2)
595595
r = typecheck(r, Etop)
596596
ordermapassign(r, order)
597-
n.List.Set([]*Node{tmp1, tmp2})
597+
n.List.Set2(tmp1, tmp2)
598598
cleantemp(t, order)
599599

600600
// Special: does not save n onto out.
@@ -647,9 +647,9 @@ func orderstmt(n *Node, order *Order) {
647647

648648
case ODELETE:
649649
t := marktemp(order)
650-
n.List.SetIndex(0, orderexpr(n.List.Index(0), order, nil))
651-
n.List.SetIndex(1, orderexpr(n.List.Index(1), order, nil))
652-
n.List.SetIndex(1, orderaddrtemp(n.List.Index(1), order)) // map key
650+
n.List.SetFirst(orderexpr(n.List.First(), order, nil))
651+
n.List.SetSecond(orderexpr(n.List.Second(), order, nil))
652+
n.List.SetSecond(orderaddrtemp(n.List.Second(), order)) // map key
653653
order.out = append(order.out, n)
654654
cleantemp(t, order)
655655

@@ -1261,12 +1261,12 @@ func orderokas2(n *Node, order *Order) {
12611261
r := nod(OAS, n.List.First(), tmp1)
12621262
r = typecheck(r, Etop)
12631263
ordermapassign(r, order)
1264-
n.List.SetIndex(0, tmp1)
1264+
n.List.SetFirst(tmp1)
12651265
}
12661266
if tmp2 != nil {
12671267
r := okas(n.List.Second(), tmp2)
12681268
r = typecheck(r, Etop)
12691269
ordermapassign(r, order)
1270-
n.List.SetIndex(1, tmp2)
1270+
n.List.SetSecond(tmp2)
12711271
}
12721272
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,8 @@ func walkrange(n *Node) {
196196
body = []*Node{nod(OAS, v1, hv1)}
197197
} else {
198198
a := nod(OAS2, nil, nil)
199-
a.List.Set([]*Node{v1, v2})
200-
a.Rlist.Set([]*Node{hv1, nod(OIND, hp, nil)})
199+
a.List.Set2(v1, v2)
200+
a.Rlist.Set2(hv1, nod(OIND, hp, nil))
201201
body = []*Node{a}
202202

203203
// Advance pointer as part of increment.
@@ -251,8 +251,8 @@ func walkrange(n *Node) {
251251
val := nodSym(ODOT, hit, valsym)
252252
val = nod(OIND, val, nil)
253253
a := nod(OAS2, nil, nil)
254-
a.List.Set([]*Node{v1, v2})
255-
a.Rlist.Set([]*Node{key, val})
254+
a.List.Set2(v1, v2)
255+
a.Rlist.Set2(key, val)
256256
body = []*Node{a}
257257
}
258258

@@ -272,7 +272,7 @@ func walkrange(n *Node) {
272272
n.Left = nod(ONE, hb, nodbool(false))
273273
a := nod(OAS2RECV, nil, nil)
274274
a.Typecheck = 1
275-
a.List.Set([]*Node{hv1, hb})
275+
a.List.Set2(hv1, hb)
276276
a.Rlist.Set1(nod(ORECV, ha, nil))
277277
n.Left.Ninit.Set1(a)
278278
if v1 == nil {

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ func typecheckselect(sel *Node) {
3131
} else if ncase.List.Len() > 1 {
3232
yyerror("select cases cannot be lists")
3333
} else {
34-
ncase.List.SetIndex(0, typecheck(ncase.List.Index(0), Etop))
35-
n = ncase.List.Index(0)
34+
ncase.List.SetFirst(typecheck(ncase.List.First(), Etop))
35+
n = ncase.List.First()
3636
ncase.Left = n
3737
ncase.List.Set(nil)
3838
setlineno(n)
@@ -187,8 +187,8 @@ func walkselect(sel *Node) {
187187
n.Op = OSELRECV
188188
}
189189
if n.Op == OSELRECV2 {
190-
n.List.SetIndex(0, nod(OADDR, n.List.First(), nil))
191-
n.List.SetIndex(0, typecheck(n.List.Index(0), Erv))
190+
n.List.SetFirst(nod(OADDR, n.List.First(), nil))
191+
n.List.SetFirst(typecheck(n.List.First(), Erv))
192192
}
193193

194194
if n.Left == nil {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,7 +1045,7 @@ func (n *Node) SetSliceBounds(low, high, max *Node) {
10451045
if low == nil && high == nil {
10461046
return
10471047
}
1048-
n.List.Set([]*Node{low, high})
1048+
n.List.Set2(low, high)
10491049
return
10501050
}
10511051
s[0] = low
@@ -1057,7 +1057,7 @@ func (n *Node) SetSliceBounds(low, high, max *Node) {
10571057
if low == nil && high == nil && max == nil {
10581058
return
10591059
}
1060-
n.List.Set([]*Node{low, high, max})
1060+
n.List.Set3(low, high, max)
10611061
return
10621062
}
10631063
s[0] = low

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ func typecheckswitch(n *Node) {
188188
}
189189

190190
nvar = typecheck(nvar, Erv|Easgn)
191-
ncase.Rlist.SetIndex(0, nvar)
191+
ncase.Rlist.SetFirst(nvar)
192192
}
193193
}
194194

@@ -628,8 +628,8 @@ func (s *exprSwitch) checkDupCases(cc []caseClause) {
628628

629629
case c.node.List.Len() == 2:
630630
// Range of integers.
631-
low := c.node.List.Index(0).Int64()
632-
high := c.node.List.Index(1).Int64()
631+
low := c.node.List.First().Int64()
632+
high := c.node.List.Second().Int64()
633633
for i := low; i <= high; i++ {
634634
prev, dup := seen[i]
635635
if !dup {
@@ -745,7 +745,7 @@ func (s *typeSwitch) walk(sw *Node) {
745745
i.Nbody.Set1(nod(OGOTO, lbl, nil))
746746
// Wrap default case with label.
747747
blk := nod(OBLOCK, nil, nil)
748-
blk.List.Set([]*Node{nod(OLABEL, lbl, nil), def})
748+
blk.List.Set2(nod(OLABEL, lbl, nil), def)
749749
def = blk
750750
}
751751
i.Left = typecheck(i.Left, Erv)
@@ -840,7 +840,7 @@ func (s *typeSwitch) typeone(t *Node) *Node {
840840
}
841841

842842
a := nod(OAS2, nil, nil)
843-
a.List.Set([]*Node{name, s.okname}) // name, ok =
843+
a.List.Set2(name, s.okname) // name, ok =
844844
b := nod(ODOTTYPE, s.facename, nil)
845845
b.Type = t.Left.Type // interface.(type)
846846
a.Rlist.Set1(b)

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -556,15 +556,20 @@ func (n *Nodes) Set(s []*Node) {
556556
}
557557

558558
// Set1 sets n to a slice containing a single node.
559-
func (n *Nodes) Set1(node *Node) {
560-
n.slice = &[]*Node{node}
559+
func (n *Nodes) Set1(n1 *Node) {
560+
n.slice = &[]*Node{n1}
561561
}
562562

563563
// Set2 sets n to a slice containing two nodes.
564564
func (n *Nodes) Set2(n1, n2 *Node) {
565565
n.slice = &[]*Node{n1, n2}
566566
}
567567

568+
// Set3 sets n to a slice containing three nodes.
569+
func (n *Nodes) Set3(n1, n2, n3 *Node) {
570+
n.slice = &[]*Node{n1, n2, n3}
571+
}
572+
568573
// MoveNodes sets n to the contents of n2, then clears n2.
569574
func (n *Nodes) MoveNodes(n2 *Nodes) {
570575
n.slice = n2.slice
@@ -577,6 +582,18 @@ func (n Nodes) SetIndex(i int, node *Node) {
577582
(*n.slice)[i] = node
578583
}
579584

585+
// SetFirst sets the first element of Nodes to node.
586+
// It panics if n does not have at least one elements.
587+
func (n Nodes) SetFirst(node *Node) {
588+
(*n.slice)[0] = node
589+
}
590+
591+
// SetSecond sets the second element of Nodes to node.
592+
// It panics if n does not have at least two elements.
593+
func (n Nodes) SetSecond(node *Node) {
594+
(*n.slice)[1] = node
595+
}
596+
580597
// Addr returns the address of the i'th element of Nodes.
581598
// It panics if n does not have at least i+1 elements.
582599
func (n Nodes) Addr(i int) **Node {

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,7 +1243,7 @@ OpSwitch:
12431243
}
12441244

12451245
if n.List.Len() == 1 && !n.Isddd {
1246-
n.List.SetIndex(0, typecheck(n.List.Index(0), Erv|Efnstruct))
1246+
n.List.SetFirst(typecheck(n.List.First(), Erv|Efnstruct))
12471247
} else {
12481248
typecheckslice(n.List.Slice(), Erv)
12491249
}
@@ -1539,7 +1539,7 @@ OpSwitch:
15391539
return n
15401540
}
15411541

1542-
args.SetIndex(1, assignconv(r, l.Type.Key(), "delete"))
1542+
args.SetSecond(assignconv(r, l.Type.Key(), "delete"))
15431543
break OpSwitch
15441544

15451545
case OAPPEND:
@@ -1552,7 +1552,7 @@ OpSwitch:
15521552
}
15531553

15541554
if args.Len() == 1 && !n.Isddd {
1555-
args.SetIndex(0, typecheck(args.Index(0), Erv|Efnstruct))
1555+
args.SetFirst(typecheck(args.First(), Erv|Efnstruct))
15561556
} else {
15571557
typecheckslice(args.Slice(), Erv)
15581558
}
@@ -1597,11 +1597,11 @@ OpSwitch:
15971597
}
15981598

15991599
if t.Elem().IsKind(TUINT8) && args.Second().Type.IsString() {
1600-
args.SetIndex(1, defaultlit(args.Index(1), Types[TSTRING]))
1600+
args.SetSecond(defaultlit(args.Second(), Types[TSTRING]))
16011601
break OpSwitch
16021602
}
16031603

1604-
args.SetIndex(1, assignconv(args.Index(1), t.Orig, "append"))
1604+
args.SetSecond(assignconv(args.Second(), t.Orig, "append"))
16051605
break OpSwitch
16061606
}
16071607

@@ -3328,7 +3328,7 @@ func typecheckas2(n *Node) {
33283328
cl := n.List.Len()
33293329
cr := n.Rlist.Len()
33303330
if cl > 1 && cr == 1 {
3331-
n.Rlist.SetIndex(0, typecheck(n.Rlist.Index(0), Erv|Efnstruct))
3331+
n.Rlist.SetFirst(typecheck(n.Rlist.First(), Erv|Efnstruct))
33323332
} else {
33333333
typecheckslice(n.Rlist.Slice(), Erv)
33343334
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,7 @@ opswitch:
818818
var_ := temp(ptrto(t.Val()))
819819
var_.Typecheck = 1
820820
var_.NonNil = true // mapaccess always returns a non-nil pointer
821-
n.List.SetIndex(0, var_)
821+
n.List.SetFirst(var_)
822822
n = walkexpr(n, init)
823823
init.Append(n)
824824
n = nod(OAS, a, nod(OIND, var_, nil))
@@ -2860,8 +2860,8 @@ func appendslice(n *Node, init *Nodes) *Node {
28602860
// s
28612861
func walkappend(n *Node, init *Nodes, dst *Node) *Node {
28622862
if !samesafeexpr(dst, n.List.First()) {
2863-
n.List.SetIndex(0, safeexpr(n.List.Index(0), init))
2864-
n.List.SetIndex(0, walkexpr(n.List.Index(0), init))
2863+
n.List.SetFirst(safeexpr(n.List.First(), init))
2864+
n.List.SetFirst(walkexpr(n.List.First(), init))
28652865
}
28662866
walkexprlistsafe(n.List.Slice()[1:], init)
28672867

0 commit comments

Comments
 (0)