1
0
mirror of https://github.com/golang/go synced 2024-11-26 02:07:57 -07:00

cmd/6c, cmd/8c: cut stack frames by about half

The routine that adds an automatic to the stack was
adding ptrsize-1 to the size before rounding up.
That addition would only make sense to turn a round down
into a round up. Before a round up, it just wastes a word.

The effect was that a 6c function with one local and
one two-word function call used (8+8)+(16+8) = 40 bytes
instead of 8+16 = 24 bytes.

The wasted space mostly didn't matter, but one place where
it does matter is when trying to stay within the 128-byte
total frame constraint for #pragma textflag 7 functions.

This only affects the C compilers, not the Go compilers.

5c already had correct code, which is now copied to 6c and 8c.

R=ken2
CC=golang-dev
https://golang.org/cl/7303099
This commit is contained in:
Russ Cox 2013-02-18 13:24:04 -05:00
parent d62239b5f6
commit 139448fe95
2 changed files with 4 additions and 4 deletions

View File

@ -626,8 +626,8 @@ align(int32 i, Type *t, int op, int32 *maxalign)
int32
maxround(int32 max, int32 v)
{
v += SZ_VLONG-1;
v = xround(v, SZ_LONG);
if(v > max)
max = xround(v, SZ_VLONG);
return v;
return max;
}

View File

@ -632,8 +632,8 @@ align(int32 i, Type *t, int op, int32 *maxalign)
int32
maxround(int32 max, int32 v)
{
v += SZ_LONG-1;
v = xround(v, SZ_LONG);
if(v > max)
max = xround(v, SZ_LONG);
return v;
return max;
}