diff options
| author | Russ Cox <rsc@golang.org> | 2012-05-30 16:26:38 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2012-05-30 16:26:38 -0400 |
| commit | 8820ab5da9da5528e256d3a519723fdf44ddc75f (patch) | |
| tree | 7ec0273dc3d8e7415e9d83e13222ed260516bdde /src/cmd/ld/data.c | |
| parent | b91cf5058514f70750076c25af07d904d2ee7c1b (diff) | |
| download | go-8820ab5da9da5528e256d3a519723fdf44ddc75f.tar.xz | |
cmd/ld: align function entry on arch-specific boundary
16 seems pretty standard on x86 for function entry.
I don't know if ARM would benefit, so I used just 4
(single instruction alignment).
This has a minor absolute effect on the current timings.
The main hope is that it will make them more consistent from
run to run.
benchmark old ns/op new ns/op delta
BenchmarkBinaryTree17 4222117400 4140739800 -1.93%
BenchmarkFannkuch11 3462631800 3259914400 -5.85%
BenchmarkGobDecode 20887622 20620222 -1.28%
BenchmarkGobEncode 9548772 9384886 -1.72%
BenchmarkGzip 151687 150333 -0.89%
BenchmarkGunzip 8742 8741 -0.01%
BenchmarkJSONEncode 62730560 65210990 +3.95%
BenchmarkJSONDecode 252569180 249394860 -1.26%
BenchmarkMandelbrot200 5267599 5273394 +0.11%
BenchmarkRevcomp25M 980813500 996013800 +1.55%
BenchmarkTemplate 361259100 360620840 -0.18%
R=ken2
CC=golang-dev
https://golang.org/cl/6244066
Diffstat (limited to 'src/cmd/ld/data.c')
| -rw-r--r-- | src/cmd/ld/data.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/cmd/ld/data.c b/src/cmd/ld/data.c index 1f64a84708..865f282114 100644 --- a/src/cmd/ld/data.c +++ b/src/cmd/ld/data.c @@ -1012,6 +1012,8 @@ textaddress(void) continue; if(sym->align != 0) va = rnd(va, sym->align); + else if(sym->text != P) + va = rnd(va, FuncAlign); sym->value = 0; for(sub = sym; sub != S; sub = sub->sub) { sub->value += va; |
