go/src/cmd
Dave Cheney 1a9373bc57 cmd/compile/internal/gc: avoid append when building Type fields
As a followup to CL 21296, avoid append operations when constructing the
fields of a Type if the length is known beforehand

This also includes some small scoping driveby cleanups, and a change to
tointerface0 to avoid iterating over the field list twice.

compilebench shows a very small reduction in allocations.

 name      old time/op    new time/op    delta
Template     364ms ± 5%     363ms ± 4%    ~     (p=0.945 n=20+19)
Unicode      182ms ±11%     185ms ±12%    ~     (p=0.445 n=20+20)
GoTypes      1.14s ± 2%     1.14s ± 3%    ~     (p=0.221 n=20+20)
Compiler     5.85s ± 2%     5.84s ± 2%    ~     (p=0.369 n=20+20)

name      old alloc/op   new alloc/op   delta
Template    56.7MB ± 0%    56.7MB ± 0%  -0.04%  (p=0.000 n=20+20)
Unicode     38.3MB ± 0%    38.3MB ± 0%    ~     (p=0.728 n=20+19)
GoTypes      180MB ± 0%     180MB ± 0%  -0.02%  (p=0.000 n=20+20)
Compiler     812MB ± 0%     812MB ± 0%  -0.02%  (p=0.000 n=19+20)

name      old allocs/op  new allocs/op  delta
Template      482k ± 0%      480k ± 0%  -0.34%  (p=0.000 n=20+20)
Unicode       377k ± 0%      377k ± 0%  -0.04%  (p=0.010 n=20+20)
GoTypes      1.36M ± 0%     1.35M ± 0%  -0.24%  (p=0.000 n=20+20)
Compiler     5.47M ± 0%     5.46M ± 0%  -0.11%  (p=0.000 n=20+18)

Change-Id: Ibb4c40229fa3816acd8de98ba41d1571a2aabacf
Reviewed-on: https://go-review.googlesource.com/21352
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Dave Cheney <dave@cheney.net>
2016-03-31 02:22:18 +00:00
..
addr2line
api all: delete dead non-test code 2016-03-25 06:28:13 +00:00
asm cmd/asm: add s390x support 2016-03-30 05:25:49 +00:00
cgo all: delete dead non-test code 2016-03-25 06:28:13 +00:00
compile cmd/compile/internal/gc: avoid append when building Type fields 2016-03-31 02:22:18 +00:00
cover all: single space after period. 2016-03-02 00:13:47 +00:00
dist cmd/dist: make fortran test conditional on bash existence 2016-03-30 11:35:40 +00:00
doc all: delete dead non-test code 2016-03-25 06:28:13 +00:00
fix all: single space after period. 2016-03-02 00:13:47 +00:00
go cmd/go: remove code specific to Google Code 2016-03-28 05:37:04 +00:00
gofmt all: single space after period. 2016-03-02 00:13:47 +00:00
internal cmd/internal/obj: add copyright header to files 2016-03-30 05:01:49 +00:00
link cmd/compile, cmd/link: record lengths in object file 2016-03-30 03:44:41 +00:00
nm all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
objdump
pack cmd/pack,vet: use `go doc` instead of `godoc` in doc 2016-03-17 21:06:40 +00:00
pprof cmd/pprof/internal: use and accept packed encoding for repeated fields 2016-03-28 22:55:20 +00:00
trace all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
vet cmd/vet: allow lock types inside built-in new() 2016-03-30 00:16:48 +00:00
yacc all: delete dead non-test code 2016-03-25 06:28:13 +00:00