diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2019-01-04 00:34:52 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2019-01-04 00:35:31 +0100 |
commit | 377cc97b193204595d00a0b8d0d2b52c2d596586 (patch) | |
tree | bf9bad79188a49165f4957020255a2bf3d682719 | |
parent | 02c3d7a1c9ea82a8babf49f8a5305ec942b56dfa (diff) | |
download | busybox-377cc97b193204595d00a0b8d0d2b52c2d596586.tar.gz |
bc: eliminate struct BcInstPtr::results_len_before_call, it is redundant
function old new delta
zbc_program_call 332 318 -14
zxc_program_exec 4147 4087 -60
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-74) Total: -74 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | miscutils/bc.c | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index 0bbd53a65..ec3560c2b 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c @@ -378,7 +378,6 @@ typedef struct BcResult { typedef struct BcInstPtr { size_t func; size_t inst_idx; - IF_BC(size_t results_len_before_call;) } BcInstPtr; typedef enum BcLexType { @@ -5311,7 +5310,6 @@ static BC_STATUS zxc_program_read(void) ip.func = BC_PROG_READ; ip.inst_idx = 0; - IF_BC(ip.results_len_before_call = G.prog.results.len;) bc_vec_push(&G.prog.exestack, &ip); exec_err: @@ -5971,7 +5969,6 @@ static BC_STATUS zbc_program_call(char *code, size_t *idx) RETURN_STATUS(bc_error_fmt("function has %u parameters, but called with %u", func->nparams, nparams)); } ip.inst_idx = 0; - ip.results_len_before_call = G.prog.results.len - nparams; for (i = 0; i < nparams; ++i) { BcResult *arg; @@ -6019,11 +6016,6 @@ static BC_STATUS zbc_program_return(char inst) size_t i; BcInstPtr *ip = bc_vec_top(&G.prog.exestack); -#if SANITY_CHECKS - if (!STACK_HAS_EQUAL_OR_MORE_THAN(&G.prog.results, ip->results_len_before_call + (inst == XC_INST_RET))) - RETURN_STATUS(bc_error_stack_has_too_few_elements()); -#endif - if (inst == XC_INST_RET) { BcStatus s; BcNum *num; @@ -6033,6 +6025,7 @@ static BC_STATUS zbc_program_return(char inst) if (s) RETURN_STATUS(s); bc_num_init(&res.d.n, num->len); bc_num_copy(&res.d.n, num); + bc_vec_pop(&G.prog.results); //} else if (f->void_func) { //prepare "void" result in res } else { @@ -6040,8 +6033,6 @@ static BC_STATUS zbc_program_return(char inst) //bc_num_zero(&res.d.n); - already is } res.t = XC_RESULT_TEMP; - - bc_vec_npop(&G.prog.results, G.prog.results.len - ip->results_len_before_call); bc_vec_push(&G.prog.results, &res); bc_vec_pop(&G.prog.exestack); |