go/src
Keith Randall 89d74f5416 cmd/compile: set itab function pointers at compile time
I noticed that we don't set an itab's function pointers at compile
time. Instead, we currently do it at executable startup.

Set the function pointers at compile time instead. This shortens
startup time. It has no effect on normal binary size. Object files
will have more relocations, but that isn't a big deal.

For PIE there are additional pointers that will need to be adjusted at
load time. There are already other pointers in an itab that need to be
adjusted, so the cache line will already be paged in. There might be
some binary size overhead to mark these pointers. The "go test -c
-buildmode=pie net/http" binary is 0.18% bigger.

Update #20505

Change-Id: I267c82489915b509ff66e512fc7319b2dd79b8f7
Reviewed-on: https://go-review.googlesource.com/44341
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Martin Möhrmann <moehrmann@google.com>
2017-08-15 19:00:03 +00:00
..
archive archive/tar: re-implement USTAR path splitting 2017-08-15 05:40:22 +00:00
bufio Revert "bufio: make Reader.Peek invalidate Unreads" 2017-07-06 03:06:44 +00:00
builtin
bytes bytes: speed up Fields and FieldsFunc 2017-08-14 21:08:51 +00:00
cmd cmd/compile: set itab function pointers at compile time 2017-08-15 19:00:03 +00:00
compress
container
context
crypto crypto/tls: disallow handshake messages fragmented across CCS 2017-08-15 18:45:06 +00:00
database/sql database/sql: fail on unsupported options when context is un-cancellable 2017-08-09 20:06:20 +00:00
debug debug/macho: make Type implements fmt.(Go)Stringer interfaces 2017-08-15 00:13:36 +00:00
encoding encoding/asn1: handle application tag in Marshal 2017-08-15 18:45:39 +00:00
errors
expvar
flag flag: make default Usage prefer CommandLine's output over just os.Stderr 2017-08-08 01:47:47 +00:00
fmt fmt: add ascii fast path for decoding verbs 2017-08-14 12:25:45 +00:00
go go/types: remove nil check around range 2017-08-10 12:17:11 +00:00
hash
html html: updated entity spec link 2017-08-08 04:29:35 +00:00
image
index/suffixarray
internal runtime, internal/cpu: CPU capabilities detection for ppc64x 2017-08-14 12:16:42 +00:00
io io/ioutil: add example for ReadFile 2017-07-15 23:28:44 +00:00
log log: adds a Logger Output method Example 2017-07-16 03:57:11 +00:00
math math/big: improve performance for AddMulVVW and mulAddVWW for ppc64x 2017-08-11 13:59:52 +00:00
mime
net net/http: various small cleanups 2017-08-14 16:37:27 +00:00
os os: remove duplicate check from windows os.Stat 2017-07-20 07:43:15 +00:00
path
plugin plugin: mention that there are known bugs with plugins 2017-07-28 00:29:08 +00:00
reflect cmd/compile: generate makechan calls with int arguments 2017-08-15 05:54:24 +00:00
regexp regexp: example for MatchString function 2017-07-15 21:13:35 +00:00
runtime cmd/compile: set itab function pointers at compile time 2017-08-15 19:00:03 +00:00
sort sort: add example for Strings 2017-07-15 23:17:23 +00:00
strconv strconv: cleanup variable declarations in ParseUint 2017-08-15 04:24:52 +00:00
strings strings: use slice instead of list and array in Fields comment 2017-08-14 21:25:53 +00:00
sync sync: delete a sentence from the Map docs 2017-07-21 22:00:47 +00:00
syscall syscall: really use utimensat for UtimesNano on Solaris 2017-08-15 16:56:03 +00:00
testing testing: explain how SkipNow and FailNow stop execution 2017-08-09 11:47:38 +00:00
text text/template: support indexing into *int* maps 2017-08-12 00:21:16 +00:00
time time: remove unused parameter 2017-08-14 02:22:20 +00:00
unicode
unsafe
vendor/golang_org/x
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
run.bat
run.rc