awk: use "static" tmpvars in main and exit

function                                             old     new   delta
awk_exit                                             103      93     -10
awk_main                                             850     832     -18
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-28)             Total: -28 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2021-07-02 14:33:13 +02:00
parent 1193c68fa7
commit 966cafcc77

View File

@ -562,6 +562,8 @@ struct globals2 {
var ptest__tmpvar; var ptest__tmpvar;
var awk_printf__tmpvar; var awk_printf__tmpvar;
var as_regex__tmpvar; var as_regex__tmpvar;
var exit__tmpvar;
var main__tmpvar;
tsplitter exec_builtin__tspl; tsplitter exec_builtin__tspl;
@ -638,11 +640,6 @@ static void syntax_error(const char *message)
bb_error_msg_and_die("%s:%i: %s", g_progname, g_lineno, message); bb_error_msg_and_die("%s:%i: %s", g_progname, g_lineno, message);
} }
static void zero_out_var(var *vp)
{
memset(vp, 0, sizeof(*vp));
}
/* ---- hash stuff ---- */ /* ---- hash stuff ---- */
static unsigned hashidx(const char *name) static unsigned hashidx(const char *name)
@ -3372,11 +3369,9 @@ static int awk_exit(int r)
unsigned i; unsigned i;
if (!exiting) { if (!exiting) {
var tv;
exiting = TRUE; exiting = TRUE;
nextrec = FALSE; nextrec = FALSE;
zero_out_var(&tv); evaluate(endseq.first, &G.exit__tmpvar);
evaluate(endseq.first, &tv);
} }
/* waiting for children */ /* waiting for children */
@ -3404,7 +3399,6 @@ int awk_main(int argc UNUSED_PARAM, char **argv)
llist_t *list_e = NULL; llist_t *list_e = NULL;
#endif #endif
int i; int i;
var tv;
INIT_G(); INIT_G();
@ -3514,8 +3508,7 @@ int awk_main(int argc UNUSED_PARAM, char **argv)
newfile("/dev/stdout")->F = stdout; newfile("/dev/stdout")->F = stdout;
newfile("/dev/stderr")->F = stderr; newfile("/dev/stderr")->F = stderr;
zero_out_var(&tv); evaluate(beginseq.first, &G.main__tmpvar);
evaluate(beginseq.first, &tv);
if (!mainseq.first && !endseq.first) if (!mainseq.first && !endseq.first)
awk_exit(EXIT_SUCCESS); awk_exit(EXIT_SUCCESS);
@ -3532,7 +3525,7 @@ int awk_main(int argc UNUSED_PARAM, char **argv)
nextrec = FALSE; nextrec = FALSE;
incvar(intvar[NR]); incvar(intvar[NR]);
incvar(intvar[FNR]); incvar(intvar[FNR]);
evaluate(mainseq.first, &tv); evaluate(mainseq.first, &G.main__tmpvar);
if (nextfile) if (nextfile)
break; break;