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:
parent
d62239b5f6
commit
139448fe95
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user