bc: no need to "set to zero" BcNum after bc_num_init(), it already is

function                                             old     new   delta
bc_num_init                                           48      49      +1
bc_program_num                                      1115    1108      -7
bc_program_exec                                     4098    4081     -17
bc_vm_init                                           786     768     -18
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: 1/-42)             Total: -41 bytes
   text	   data	    bss	    dec	    hex	filename
 985872	    477	   7296	 993645	  f296d	busybox_old
 985831	    477	   7296	 993604	  f2944	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2018-12-09 12:04:44 +01:00
parent e20e00de34
commit 3129f705fc

View File

@ -1399,12 +1399,16 @@ static void bc_num_ten(BcNum *n)
n->num[1] = 1; n->num[1] = 1;
} }
// Note: this also sets BcNum to zero
static void bc_num_init(BcNum *n, size_t req) static void bc_num_init(BcNum *n, size_t req)
{ {
req = req >= BC_NUM_DEF_SIZE ? req : BC_NUM_DEF_SIZE; req = req >= BC_NUM_DEF_SIZE ? req : BC_NUM_DEF_SIZE;
memset(n, 0, sizeof(BcNum)); //memset(n, 0, sizeof(BcNum)); - cleared by assignments below
n->num = xmalloc(req); n->num = xmalloc(req);
n->cap = req; n->cap = req;
n->rdx = 0;
n->len = 0;
n->neg = false;
} }
static void bc_num_init_DEF_SIZE(BcNum *n) static void bc_num_init_DEF_SIZE(BcNum *n)
@ -2288,7 +2292,7 @@ static void bc_num_parseBase(BcNum *n, const char *val, BcNum *base)
} }
bc_num_init(&result, base->len); bc_num_init(&result, base->len);
bc_num_zero(&result); //bc_num_zero(&result); - already is
bc_num_one(&mult); bc_num_one(&mult);
for (i += 1, digits = 0; i < len; ++i, ++digits) { for (i += 1, digits = 0; i < len; ++i, ++digits) {
@ -6209,7 +6213,7 @@ static BcStatus bc_program_return(char inst)
} }
else { else {
bc_num_init_DEF_SIZE(&res.d.n); bc_num_init_DEF_SIZE(&res.d.n);
bc_num_zero(&res.d.n); //bc_num_zero(&res.d.n); - already is
} }
// We need to pop arguments as well, so this takes that into account. // We need to pop arguments as well, so this takes that into account.
@ -6768,8 +6772,7 @@ static BcStatus bc_program_exec(void)
bc_num_init_DEF_SIZE(&r.d.n); bc_num_init_DEF_SIZE(&r.d.n);
if (!bc_num_cmp(num, &G.prog.zero)) if (!bc_num_cmp(num, &G.prog.zero))
bc_num_one(&r.d.n); bc_num_one(&r.d.n);
else //else bc_num_zero(&r.d.n); - already is
bc_num_zero(&r.d.n);
bc_program_retire(&r, BC_RESULT_TEMP); bc_program_retire(&r, BC_RESULT_TEMP);
break; break;
case BC_INST_NEG: case BC_INST_NEG:
@ -7379,10 +7382,10 @@ static void bc_program_init(void)
#endif #endif
bc_num_init_DEF_SIZE(&G.prog.last); bc_num_init_DEF_SIZE(&G.prog.last);
bc_num_zero(&G.prog.last); //bc_num_zero(&G.prog.last); - already is
bc_num_init_DEF_SIZE(&G.prog.zero); bc_num_init_DEF_SIZE(&G.prog.zero);
bc_num_zero(&G.prog.zero); //bc_num_zero(&G.prog.zero); - already is
bc_num_init_DEF_SIZE(&G.prog.one); bc_num_init_DEF_SIZE(&G.prog.one);
bc_num_one(&G.prog.one); bc_num_one(&G.prog.one);