]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: set itab function pointers at compile time
authorKeith Randall <khr@golang.org>
Tue, 30 May 2017 19:59:25 +0000 (12:59 -0700)
committerKeith Randall <khr@golang.org>
Tue, 15 Aug 2017 19:00:03 +0000 (19:00 +0000)
commit89d74f54168619cf1f36b6868626fbb1237c1deb
treea7793ee4bbab01db12313697d258947de2f40ce1
parent250a9610a41aa0fec6f020d2c31efe8fcd1f2941
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>
src/cmd/compile/internal/gc/reflect.go
src/runtime/iface.go
src/runtime/plugin.go