aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2021-07-12 13:30:30 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2021-07-12 13:30:30 +0200
commitab755e3717cefc06fd28ce8db56f0402412afaa3 (patch)
tree6fa25ebf806c7a70672fb7205555ca1c9a7c3175
parent8d269ef85984f6476e7fdbec2c5a70f3b5c48a72 (diff)
downloadbusybox-w32-ab755e3717cefc06fd28ce8db56f0402412afaa3.tar.gz
busybox-w32-ab755e3717cefc06fd28ce8db56f0402412afaa3.tar.bz2
busybox-w32-ab755e3717cefc06fd28ce8db56f0402412afaa3.zip
awk: in parsing, remove superfluous NEWLINE check; optimize builtin arg evaluation
function old new delta exec_builtin 1149 1145 -4 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--editors/awk.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/editors/awk.c b/editors/awk.c
index 437d87ecf..7a282356d 100644
--- a/editors/awk.c
+++ b/editors/awk.c
@@ -1589,8 +1589,8 @@ static void chain_group(void)
1589 chain_until_rbrace(); 1589 chain_until_rbrace();
1590 return; 1590 return;
1591 } 1591 }
1592 if (tc & (TS_OPSEQ | TC_SEMICOL | TC_NEWLINE)) { 1592 if (tc & (TS_OPSEQ | TC_SEMICOL)) {
1593 debug_printf_parse("%s: TS_OPSEQ | TC_SEMICOL | TC_NEWLINE\n", __func__); 1593 debug_printf_parse("%s: TS_OPSEQ | TC_SEMICOL\n", __func__);
1594 rollback_token(); 1594 rollback_token();
1595 chain_expr(OC_EXEC | Vx); 1595 chain_expr(OC_EXEC | Vx);
1596 return; 1596 return;
@@ -2582,10 +2582,11 @@ static NOINLINE var *exec_builtin(node *op, var *res)
2582 av[2] = av[3] = NULL; 2582 av[2] = av[3] = NULL;
2583 for (i = 0; i < 4 && op; i++) { 2583 for (i = 0; i < 4 && op; i++) {
2584 an[i] = nextarg(&op); 2584 an[i] = nextarg(&op);
2585 if (isr & 0x09000000) 2585 if (isr & 0x09000000) {
2586 av[i] = evaluate(an[i], TMPVAR(i)); 2586 av[i] = evaluate(an[i], TMPVAR(i));
2587 if (isr & 0x08000000) 2587 if (isr & 0x08000000)
2588 as[i] = getvar_s(av[i]); 2588 as[i] = getvar_s(av[i]);
2589 }
2589 isr >>= 1; 2590 isr >>= 1;
2590 } 2591 }
2591 2592