cmd/compile: eliminate a bunch of IterFields/IterMethods calls

This is an automated rewrite of all the calls of the form:

    for f, it := IterFields(t); f != nil; f = it.Next() { ... }

Followup CLs will work on cleaning up the remaining cases.

Change-Id: Ic1005ad45ae0b50c63e815e34e507e2d2644ba1a
Reviewed-on: https://go-review.googlesource.com/20794
Reviewed-by: David Crawshaw <crawshaw@golang.org>
This commit is contained in:
Matthew Dempsky 2016-03-17 01:32:18 -07:00
parent 517b6131b2
commit f6bca3f32d
17 changed files with 69 additions and 76 deletions

View file

@ -241,7 +241,7 @@ func methodfunc(f *Type, receiver *Type) *Type {
}
var d *Node
for t, it := IterFields(f.Params()); t != nil; t = it.Next() {
for _, t := range f.Params().Fields().Slice() {
d = Nod(ODCLFIELD, nil, nil)
d.Type = t.Type
d.Isddd = t.Isddd
@ -249,7 +249,7 @@ func methodfunc(f *Type, receiver *Type) *Type {
}
var out []*Node
for t, it := IterFields(f.Results()); t != nil; t = it.Next() {
for _, t := range f.Results().Fields().Slice() {
d = Nod(ODCLFIELD, nil, nil)
d.Type = t.Type
out = append(out, d)
@ -356,7 +356,7 @@ func methods(t *Type) []*Sig {
// imethods returns the methods of the interface type t, sorted by name.
func imethods(t *Type) []*Sig {
var methods []*Sig
for f, it := IterFields(t); f != nil; f = it.Next() {
for _, f := range t.Fields().Slice() {
if f.Type.Etype != TFUNC || f.Sym == nil {
continue
}
@ -590,7 +590,7 @@ func haspointers(t *Type) bool {
case TSTRUCT:
ret = false
for t1, it := IterFields(t); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Fields().Slice() {
if haspointers(t1.Type) {
ret = true
break
@ -650,7 +650,7 @@ func typeptrdata(t *Type) int64 {
case TSTRUCT:
// Find the last field that has pointers.
var lastPtrField *Field
for t1, it := IterFields(t); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Fields().Slice() {
if haspointers(t1.Type) {
lastPtrField = t1
}
@ -883,7 +883,7 @@ func isreflexive(t *Type) bool {
return isreflexive(t.Type)
case TSTRUCT:
for t1, it := IterFields(t); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Fields().Slice() {
if !isreflexive(t1.Type) {
return false
}
@ -933,7 +933,7 @@ func needkeyupdate(t *Type) bool {
return needkeyupdate(t.Type)
case TSTRUCT:
for t1, it := IterFields(t); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Fields().Slice() {
if needkeyupdate(t1.Type) {
return true
}
@ -1028,15 +1028,15 @@ ok:
ot = dextratype(s, ot, t, 0)
case TFUNC:
for t1, it := IterFields(t.Recvs()); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Recvs().Fields().Slice() {
dtypesym(t1.Type)
}
isddd := false
for t1, it := IterFields(t.Params()); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Params().Fields().Slice() {
isddd = t1.Isddd
dtypesym(t1.Type)
}
for t1, it := IterFields(t.Results()); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Results().Fields().Slice() {
dtypesym(t1.Type)
}
@ -1056,13 +1056,13 @@ ok:
ot = dextratype(s, ot, t, dataAdd)
// Array of rtype pointers follows funcType.
for t1, it := IterFields(t.Recvs()); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Recvs().Fields().Slice() {
ot = dsymptr(s, ot, dtypesym(t1.Type), 0)
}
for t1, it := IterFields(t.Params()); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Params().Fields().Slice() {
ot = dsymptr(s, ot, dtypesym(t1.Type), 0)
}
for t1, it := IterFields(t.Results()); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Results().Fields().Slice() {
ot = dsymptr(s, ot, dtypesym(t1.Type), 0)
}
@ -1142,7 +1142,7 @@ ok:
case TSTRUCT:
n := 0
for t1, it := IterFields(t); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Fields().Slice() {
dtypesym(t1.Type)
n++
}
@ -1155,7 +1155,7 @@ ok:
dataAdd := n * structfieldSize()
ot = dextratype(s, ot, t, dataAdd)
for t1, it := IterFields(t); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Fields().Slice() {
// ../../../../runtime/type.go:/structField
if t1.Sym != nil && t1.Embedded == 0 {
ot = dgostringptr(s, ot, t1.Sym.Name)
@ -1521,7 +1521,7 @@ func (p *GCProg) emit(t *Type, offset int64) {
p.w.Repeat(elem.Width/int64(Widthptr), count-1)
case TSTRUCT:
for t1, it := IterFields(t); t1 != nil; t1 = it.Next() {
for _, t1 := range t.Fields().Slice() {
p.emit(t1.Type, offset+t1.Width)
}
}