mirror of
https://github.com/golang/go
synced 2024-11-20 07:14:40 -07:00
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
This commit is contained in:
parent
b91cf50585
commit
8820ab5da9
@ -36,7 +36,8 @@
|
||||
enum
|
||||
{
|
||||
thechar = '5',
|
||||
PtrSize = 4
|
||||
PtrSize = 4,
|
||||
FuncAlign = 4 // single-instruction alignment
|
||||
};
|
||||
|
||||
#ifndef EXTERN
|
||||
|
@ -40,7 +40,8 @@
|
||||
enum
|
||||
{
|
||||
thechar = '6',
|
||||
PtrSize = 8
|
||||
PtrSize = 8,
|
||||
FuncAlign = 16
|
||||
};
|
||||
|
||||
#define P ((Prog*)0)
|
||||
|
@ -40,7 +40,8 @@
|
||||
enum
|
||||
{
|
||||
thechar = '8',
|
||||
PtrSize = 4
|
||||
PtrSize = 4,
|
||||
FuncAlign = 16
|
||||
};
|
||||
|
||||
#define P ((Prog*)0)
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user