compiler,runtime: pass only ptr and len to some runtime calls
This ports https://golang.org/cl/227163 to the Go frontend.
This is a step toward moving up to the go1.15rc1 release.
Original CL description:
cmd/compile,runtime: pass only ptr and len to some runtime calls
Some runtime calls accept a slice, but only use ptr and len.
This change modifies most such routines to accept only ptr and len.
After this change, the only runtime calls that accept an unnecessary
cap arg are concatstrings and slicerunetostring.
Neither is particularly common, and both are complicated to modify.
Negligible compiler performance impact. Shrinks binaries a little.
There are only a few regressions; the one I investigated was
due to register allocation fluctuation.
Passes 'go test -race std cmd', modulo golang/go#38265 and golang/go#38266.
Wow, does that take a long time to run.
file before after Δ %
compile
19655024 19655152 +128 +0.001%
cover
5244840 5236648 -8192 -0.156%
dist
3662376 3658280 -4096 -0.112%
link
6680056 6675960 -4096 -0.061%
pprof
14789844 14777556 -12288 -0.083%
test2json
2824744 2820648 -4096 -0.145%
trace
11647876 11639684 -8192 -0.070%
vet
8260472 8256376 -4096 -0.050%
total
115163736 115118808 -44928 -0.039%
For golang/go#36890
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/245099