go/src
isharipo 8e3dd8ab88 cmd/internal/obj/x86: faster Assemble for non-NaCl hosts
Make span6 function (used as LinkArch.Assemble) faster
by avoiding redundant re-assemble rounds on hosts
that are not NaCl.

NaCl is excluded because it needs Prog.Isize to fix alignment.

For make.bash, there are around 50% of functions that can
be encoded in a single trip. With this change, those function
will be assembled with 1 round instead of 2.

compilebench results:

    name        old time/op       new time/op       delta
    Template          305ms ± 2%        299ms ± 2%  -1.99%  (p=0.001 n=10+10)
    Unicode           139ms ± 3%        138ms ± 4%    ~     (p=0.222 n=9+9)
    GoTypes           1.05s ± 1%        1.04s ± 1%  -1.34%  (p=0.000 n=10+9)
    Compiler          4.78s ± 1%        4.71s ± 1%  -1.45%  (p=0.000 n=9+9)
    SSA               12.2s ± 1%        12.0s ± 1%  -1.90%  (p=0.000 n=9+10)
    Flate             204ms ± 3%        202ms ± 3%    ~     (p=0.052 n=10+10)
    GoParser          248ms ± 1%        244ms ± 2%  -1.79%  (p=0.000 n=10+9)
    Reflect           671ms ± 1%        664ms ± 1%  -0.96%  (p=0.001 n=9+9)
    Tar               287ms ± 2%        285ms ± 3%    ~     (p=0.393 n=10+10)
    XML               362ms ± 1%        353ms ± 2%  -2.60%  (p=0.000 n=10+9)
    StdCmd            29.2s ± 1%        29.0s ± 1%  -0.63%  (p=0.021 n=10+8)
    [Geo mean]        888ms             875ms       -1.40%

    name        old user-time/op  new user-time/op  delta
    Template          393ms ± 5%        373ms ± 8%  -5.12%  (p=0.013 n=9+10)
    Unicode           185ms ± 6%        184ms ± 5%    ~     (p=0.825 n=10+10)
    GoTypes           1.33s ± 1%        1.31s ± 3%  -1.60%  (p=0.004 n=10+10)
    Compiler          5.98s ± 3%        5.92s ± 1%    ~     (p=0.050 n=10+10)
    SSA               15.5s ± 2%        15.3s ± 0%    ~     (p=0.156 n=10+9)
    Flate             255ms ± 5%        252ms ± 5%    ~     (p=0.362 n=10+10)
    GoParser          309ms ± 1%        304ms ± 3%  -1.79%  (p=0.021 n=7+10)
    Reflect           839ms ± 2%        833ms ± 1%    ~     (p=0.160 n=10+9)
    Tar               363ms ± 3%        358ms ± 4%    ~     (p=0.194 n=8+10)
    XML               446ms ± 3%        442ms ± 3%    ~     (p=0.503 n=10+10)
    [Geo mean]        791ms             779ms       -1.55%

Passes toolstash-check.

Change-Id: Ibcdb09f2c28907932581b7566f46d34be292594b
Reviewed-on: https://go-review.googlesource.com/108895
Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2018-04-23 20:13:32 +00:00
..
archive go/printer, gofmt: tuned table alignment for better results 2018-04-04 13:39:34 -07:00
bufio bufio: document ReadFrom/WriteTo calls to underlying methods 2018-03-28 22:21:52 +00:00
builtin
bytes
cmd cmd/internal/obj/x86: faster Assemble for non-NaCl hosts 2018-04-23 20:13:32 +00:00
compress compress/flate: optimize huffSym 2018-04-17 22:37:49 +00:00
container container/heap: fix comments style 2018-04-11 20:11:09 +00:00
context context: avoid defer in the cancelCtx.Err method 2018-04-15 21:35:53 +00:00
crypto crypto: make receiver name consistent 2018-04-23 18:18:01 +00:00
database/sql database/sql: remove unnecessary else conditions 2018-04-19 18:57:52 +00:00
debug debug/elf: add riscv64 relocations 2018-04-18 13:19:31 +00:00
encoding encoding/json: remove unnecessary if conditions 2018-04-20 01:41:41 +00:00
errors
expvar all: use strings.Builder instead of bytes.Buffer where appropriate 2018-03-26 23:05:53 +00:00
flag flag: correct zero values when printing defaults 2018-04-01 20:17:22 +00:00
fmt fmt: make %v doc for compound objects consistent 2018-04-17 23:47:44 +00:00
go go/internal/gcimporter: extract ChanDir and fake FileSet logic 2018-04-17 23:47:04 +00:00
hash
html text/template: copy Decl field when copying PipeNode 2018-04-10 14:26:58 +00:00
image
index/suffixarray
internal net: document caveats for (*syscall.RawConn).Write on Windows 2018-04-21 00:48:00 +00:00
io io/ioutil: change TempFile prefix to a pattern 2018-04-12 20:00:25 +00:00
log
math math: add a testcase for Mod and Remainder respectively 2018-04-17 03:17:22 +00:00
mime mime: add wasm architecture 2018-04-13 20:20:12 +00:00
net net/http: remove unnecessary parameter type 2018-04-22 17:30:54 +00:00
os os/signal: add func Ignored(sig Signal) bool 2018-04-21 04:18:03 +00:00
path path/filepath: change example to print the correct path on failure 2018-03-26 17:40:01 +00:00
plugin
reflect reflect: define MyBuffer more locally in TestImplicitMapConversion 2018-04-18 12:47:39 +00:00
regexp regexp: use sync.Pool to cache regexp.machine objects 2018-04-03 16:03:19 +00:00
runtime os/signal: add func Ignored(sig Signal) bool 2018-04-21 04:18:03 +00:00
sort sort: fix typo in comment 2018-04-22 22:32:11 +00:00
strconv strconv: make code formatting more consistent in doc.go 2018-03-19 12:53:16 +00:00
strings strings: fix flaky TestBuilderGrow test 2018-04-03 00:11:46 +00:00
sync sync/atomic: use package prefix in examples 2018-04-18 23:58:54 +00:00
syscall syscall: avoid extra syscall on send/recvmsg on Linux 2018-04-19 22:16:24 +00:00
testing testing: failfast fails fast when Fatal called 2018-04-17 04:02:53 +00:00
text text/template: improve comment example in doc 2018-04-19 09:21:51 +00:00
time time: increase test coverage for Time.Sub 2018-04-16 21:14:40 +00:00
unicode
unsafe
vendor/golang_org/x net/http: omit forbidden Trailer headers from response 2018-04-16 17:44:41 +00:00
Make.dist
all.bash
all.bat
all.rc
androidtest.bash
bootstrap.bash
buildall.bash
clean.bash
clean.bat
clean.rc
cmp.bash
iostest.bash
make.bash
make.bat
make.rc
naclmake.bash
nacltest.bash
race.bash
race.bat
run.bash src/run.bash: remove some trailing whitespace 2018-04-01 16:12:47 +00:00
run.bat
run.rc