diff options
author | Josh Bleecher Snyder <josharian@gmail.com> | 2019-04-11 12:18:10 -0700 |
---|---|---|
committer | Josh Bleecher Snyder <josharian@gmail.com> | 2019-04-19 15:40:42 +0000 |
commit | 4aeac68c92c5b79d098aaa7fba168d4c943541ba (patch) | |
tree | 4583eb98e3b70309bbc8f5129c859114f5c8f066 /src/runtime/symtab.go | |
parent | c1544ff906c3696774152aaa6594d6cefce15552 (diff) | |
download | go-4aeac68c92c5b79d098aaa7fba168d4c943541ba.tar.gz go-4aeac68c92c5b79d098aaa7fba168d4c943541ba.zip |
runtime, cmd/compile: re-order PCDATA and FUNCDATA indices
The pclntab encoding supports writing only some PCDATA and FUNCDATA values.
However, the encoding is dense: The max index in use determines the space used.
We should thus choose a numbering in which frequently used indices are smaller.
This change re-orders the PCDATA and FUNCDATA indices using that principle,
using a quick and dirty instrumentation to measure index frequency.
It shrinks binaries by about 0.5%.
Updates #6853
file before after Δ %
go 14745044 14671316 -73728 -0.500%
addr2line 4305128 4280552 -24576 -0.571%
api 6095800 6058936 -36864 -0.605%
asm 4930928 4906352 -24576 -0.498%
buildid 2881520 2861040 -20480 -0.711%
cgo 4896584 4867912 -28672 -0.586%
compile 25868408 25770104 -98304 -0.380%
cover 5319656 5286888 -32768 -0.616%
dist 3654528 3634048 -20480 -0.560%
doc 4719672 4691000 -28672 -0.607%
fix 3418312 3393736 -24576 -0.719%
link 6137952 6109280 -28672 -0.467%
nm 4250536 4225960 -24576 -0.578%
objdump 4665192 4636520 -28672 -0.615%
pack 2297488 2285200 -12288 -0.535%
pprof 14735332 14657508 -77824 -0.528%
test2json 2834952 2818568 -16384 -0.578%
trace 11679964 11618524 -61440 -0.526%
vet 8452696 8403544 -49152 -0.581%
Change-Id: I30665dce57ec7a52e7d3c6718560b3aa5b83dd0b
Reviewed-on: https://go-review.googlesource.com/c/go/+/171760
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'src/runtime/symtab.go')
-rw-r--r-- | src/runtime/symtab.go | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/runtime/symtab.go b/src/runtime/symtab.go index d61affa54a..c0e8dc279b 100644 --- a/src/runtime/symtab.go +++ b/src/runtime/symtab.go @@ -198,15 +198,17 @@ func (f *Func) funcInfo() funcInfo { // // See funcdata.h and ../cmd/internal/objabi/funcdata.go. const ( - _PCDATA_StackMapIndex = 0 - _PCDATA_InlTreeIndex = 1 - _PCDATA_RegMapIndex = 2 + _PCDATA_RegMapIndex = 0 + _PCDATA_StackMapIndex = 1 + _PCDATA_InlTreeIndex = 2 + _FUNCDATA_ArgsPointerMaps = 0 _FUNCDATA_LocalsPointerMaps = 1 - _FUNCDATA_InlTree = 2 - _FUNCDATA_RegPointerMaps = 3 - _FUNCDATA_StackObjects = 4 - _ArgsSizeUnknown = -0x80000000 + _FUNCDATA_RegPointerMaps = 2 + _FUNCDATA_StackObjects = 3 + _FUNCDATA_InlTree = 4 + + _ArgsSizeUnknown = -0x80000000 ) // A FuncID identifies particular functions that need to be treated |