diff options
| author | Keith Randall <khr@golang.org> | 2017-05-30 12:59:25 -0700 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2017-08-15 19:00:03 +0000 |
| commit | 89d74f54168619cf1f36b6868626fbb1237c1deb (patch) | |
| tree | a7793ee4bbab01db12313697d258947de2f40ce1 /src/runtime/plugin.go | |
| parent | 250a9610a41aa0fec6f020d2c31efe8fcd1f2941 (diff) | |
| download | go-89d74f54168619cf1f36b6868626fbb1237c1deb.tar.xz | |
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>
Diffstat (limited to 'src/runtime/plugin.go')
| -rw-r--r-- | src/runtime/plugin.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/runtime/plugin.go b/src/runtime/plugin.go index 34b306ae25..caecba67f8 100644 --- a/src/runtime/plugin.go +++ b/src/runtime/plugin.go @@ -56,7 +56,7 @@ func plugin_lastmoduleinit() (path string, syms map[string]interface{}, mismatch lock(&itabLock) for _, i := range md.itablinks { - itabAddStartup(i) + itabAdd(i) } unlock(&itabLock) |
