From: Ken Thompson Date: Tue, 14 Oct 2008 03:14:09 +0000 (-0700) Subject: stack allocation for the init function X-Git-Tag: weekly.2009-11-06~3000 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=1ea5bc753328c9d79e20ec84378c7c76a1b665ea;p=gostls13.git stack allocation for the init function R=r OCL=17063 CL=17063 --- diff --git a/src/cmd/gc/dcl.c b/src/cmd/gc/dcl.c index 5ba7408444..725bfd2ae0 100644 --- a/src/cmd/gc/dcl.c +++ b/src/cmd/gc/dcl.c @@ -987,7 +987,7 @@ fninit(Node *n) // (2) maxarg = 0; - stksize = 0; + stksize = initstksize; snprint(namebuf, sizeof(namebuf), "init_%s_function", filename); diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h index 5916b11ebf..fec7ba7dde 100644 --- a/src/cmd/gc/go.h +++ b/src/cmd/gc/go.h @@ -451,7 +451,8 @@ EXTERN Node* lastconst; EXTERN int32 vargen; EXTERN int32 exportgen; EXTERN int32 maxarg; -EXTERN int32 stksize; +EXTERN int32 stksize; // stack size for current frame +EXTERN int32 initstksize; // stack size for init function EXTERN ushort blockgen; // max block number EXTERN ushort block; // current block number diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y index d08fb515ca..b7eba4a470 100644 --- a/src/cmd/gc/go.y +++ b/src/cmd/gc/go.y @@ -178,7 +178,11 @@ hidden_import_list: * declarations */ xdcl: - common_dcl + { stksize = initstksize; } common_dcl + { + $$ = $2; + initstksize = stksize; + } | xfndcl { $$ = N; @@ -187,10 +191,11 @@ xdcl: { $$ = N; } -| LEXPORT { exportadj = 1; } common_dcl +| LEXPORT { exportadj = 1; stksize = initstksize; } common_dcl { $$ = $3; exportadj = 0; + initstksize = stksize; } | LEXPORT '(' export_list_r ')' {