cmd/compile: eliminate NumFields wrapper functions

Change-Id: I3c6035559288cfdc33857216f50241b81932c8a4
Reviewed-on: https://go-review.googlesource.com/20811
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/src/cmd/compile/internal/gc/bexport.go b/src/cmd/compile/internal/gc/bexport.go
index d6f3a51..7e5dbb0 100644
--- a/src/cmd/compile/internal/gc/bexport.go
+++ b/src/cmd/compile/internal/gc/bexport.go
@@ -559,12 +559,12 @@
 }
 
 func (p *exporter) fieldList(t *Type) {
-	if p.trace && countfield(t) > 0 {
+	if p.trace && t.NumFields() > 0 {
 		p.tracef("fields {>")
 		defer p.tracef("<\n} ")
 	}
 
-	p.int(countfield(t))
+	p.int(t.NumFields())
 	for _, f := range t.Fields().Slice() {
 		if p.trace {
 			p.tracef("\n")
@@ -588,12 +588,12 @@
 }
 
 func (p *exporter) methodList(t *Type) {
-	if p.trace && countfield(t) > 0 {
+	if p.trace && t.NumFields() > 0 {
 		p.tracef("methods {>")
 		defer p.tracef("<\n} ")
 	}
 
-	p.int(countfield(t))
+	p.int(t.NumFields())
 	for _, m := range t.Fields().Slice() {
 		if p.trace {
 			p.tracef("\n")
@@ -650,7 +650,7 @@
 	// use negative length to indicate unnamed parameters
 	// (look at the first parameter only since either all
 	// names are present or all are absent)
-	n := countfield(params)
+	n := params.NumFields()
 	if n > 0 && parName(params.Field(0), numbered) == "" {
 		n = -n
 	}
diff --git a/src/cmd/compile/internal/gc/dcl.go b/src/cmd/compile/internal/gc/dcl.go
index 8b05cdb..57698ce 100644
--- a/src/cmd/compile/internal/gc/dcl.go
+++ b/src/cmd/compile/internal/gc/dcl.go
@@ -1030,7 +1030,7 @@
 		return false
 	}
 	t = t.Type
-	if t.Sym != nil || t.Etype != TSTRUCT || countfield(t) != 0 {
+	if t.Sym != nil || t.Etype != TSTRUCT || t.NumFields() != 0 {
 		return false
 	}
 	return true
diff --git a/src/cmd/compile/internal/gc/sinit.go b/src/cmd/compile/internal/gc/sinit.go
index ca5d35e..7f0b98c 100644
--- a/src/cmd/compile/internal/gc/sinit.go
+++ b/src/cmd/compile/internal/gc/sinit.go
@@ -1071,7 +1071,7 @@
 		}
 
 		// initialize of not completely specified
-		if var_.isSimpleName() || n.List.Len() < structcount(t) {
+		if var_.isSimpleName() || n.List.Len() < t.NumFields() {
 			a := Nod(OAS, var_, nil)
 			typecheck(&a, Etop)
 			walkexpr(&a, init)
diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go
index 1d3c1f6..84dc29c 100644
--- a/src/cmd/compile/internal/gc/ssa.go
+++ b/src/cmd/compile/internal/gc/ssa.go
@@ -2639,7 +2639,7 @@
 		// introduced by the compiler for variadic functions.
 		return false
 	case TSTRUCT:
-		if countfield(t) > ssa.MaxStruct {
+		if t.NumFields() > ssa.MaxStruct {
 			return false
 		}
 		for _, t1 := range t.Fields().Slice() {
diff --git a/src/cmd/compile/internal/gc/subr.go b/src/cmd/compile/internal/gc/subr.go
index 8d2d500..c7cac05 100644
--- a/src/cmd/compile/internal/gc/subr.go
+++ b/src/cmd/compile/internal/gc/subr.go
@@ -592,7 +592,7 @@
 }
 
 func isnilinter(t *Type) bool {
-	return Isinter(t) && countfield(t) == 0
+	return Isinter(t) && t.NumFields() == 0
 }
 
 func isideal(t *Type) bool {
@@ -2388,7 +2388,7 @@
 
 	case TSTRUCT:
 		// Struct with 1 field of direct iface type can be direct.
-		return countfield(t) == 1 && isdirectiface(t.Field(0).Type)
+		return t.NumFields() == 1 && isdirectiface(t.Field(0).Type)
 	}
 
 	return false
diff --git a/src/cmd/compile/internal/gc/type.go b/src/cmd/compile/internal/gc/type.go
index 624c506..709506d 100644
--- a/src/cmd/compile/internal/gc/type.go
+++ b/src/cmd/compile/internal/gc/type.go
@@ -683,8 +683,3 @@
 func (t *Type) IsMemory() bool { return false }
 func (t *Type) IsFlags() bool  { return false }
 func (t *Type) IsVoid() bool   { return false }
-
-// TODO(mdempsky): Replace all of these with direct calls to t.NumFields().
-func countfield(t *Type) int  { return t.NumFields() }
-func downcount(t *Type) int   { return t.NumFields() }
-func structcount(t *Type) int { return t.NumFields() }
diff --git a/src/cmd/compile/internal/gc/typecheck.go b/src/cmd/compile/internal/gc/typecheck.go
index 1a28745..e857943 100644
--- a/src/cmd/compile/internal/gc/typecheck.go
+++ b/src/cmd/compile/internal/gc/typecheck.go
@@ -2597,8 +2597,8 @@
 		if n.Type != nil {
 			if n.Type.Etype == TSTRUCT && n.Type.Funarg {
 				if !hasddd(tstruct) {
-					n1 := downcount(tstruct)
-					n2 := downcount(n.Type)
+					n1 := tstruct.NumFields()
+					n2 := n.Type.NumFields()
 					if n2 > n1 {
 						goto toomany
 					}
@@ -2646,7 +2646,7 @@
 		}
 	}
 
-	n1 = downcount(tstruct)
+	n1 = tstruct.NumFields()
 	n2 = nl.Len()
 	if !hasddd(tstruct) {
 		if n2 > n1 {
@@ -3347,7 +3347,7 @@
 			if r.Type.Etype != TSTRUCT || !r.Type.Funarg {
 				break
 			}
-			cr = structcount(r.Type)
+			cr = r.Type.NumFields()
 			if cr != cl {
 				goto mismatch
 			}
diff --git a/src/cmd/compile/internal/gc/walk.go b/src/cmd/compile/internal/gc/walk.go
index 3b36457..e0e05c7 100644
--- a/src/cmd/compile/internal/gc/walk.go
+++ b/src/cmd/compile/internal/gc/walk.go
@@ -1742,7 +1742,7 @@
 	}
 
 	if i < nl.Len() || r != nil {
-		Yyerror("ascompatet: assignment count mismatch: %d = %d", nl.Len(), structcount(nr))
+		Yyerror("ascompatet: assignment count mismatch: %d = %d", nl.Len(), nr.NumFields())
 	}
 
 	if ullmanOverflow {
@@ -3225,7 +3225,7 @@
 		}
 	}
 
-	if t.Etype == TSTRUCT && countfield(t) <= 4 {
+	if t.Etype == TSTRUCT && t.NumFields() <= 4 {
 		// Struct of four or fewer fields.
 		// Inline comparisons.
 		var li *Node
@@ -3771,16 +3771,16 @@
 	//
 	// TODO(crawshaw): improve precision of match by working out
 	//                 how to check the method name.
-	if n := countfield(t.Params()); n != 1 {
+	if n := t.Params().NumFields(); n != 1 {
 		return
 	}
-	if n := countfield(t.Results()); n != 1 && n != 2 {
+	if n := t.Results().NumFields(); n != 1 && n != 2 {
 		return
 	}
 	p0 := t.Params().Field(0)
 	res0 := t.Results().Field(0)
 	var res1 *Field
-	if countfield(t.Results()) == 2 {
+	if t.Results().NumFields() == 2 {
 		res1 = t.Results().Field(1)
 	}