bc: avoid successive bc_vec_item(&func->autos, i)
function old new delta zbc_func_insert 97 100 +3 zbc_program_call 353 354 +1 zbc_program_exec 4085 4078 -7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/1 up/down: 4/-7) Total: -3 bytes text data bss dec hex filename 981403 485 7296 989184 f1800 busybox_old 981400 485 7296 989181 f17fd busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
f36a0adf8b
commit
87888ce4d8
@ -2504,11 +2504,13 @@ static BC_STATUS zbc_num_modexp(BcNum *a, BcNum *b, BcNum *c, BcNum *restrict d)
|
|||||||
#if ENABLE_BC
|
#if ENABLE_BC
|
||||||
static BC_STATUS zbc_func_insert(BcFunc *f, char *name, bool var)
|
static BC_STATUS zbc_func_insert(BcFunc *f, char *name, bool var)
|
||||||
{
|
{
|
||||||
|
BcId *autoid;
|
||||||
BcId a;
|
BcId a;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
for (i = 0; i < f->autos.len; ++i) {
|
autoid = (void*)f->autos.v;
|
||||||
if (strcmp(name, ((BcId *) bc_vec_item(&f->autos, i))->name) == 0)
|
for (i = 0; i < f->autos.len; i++, autoid++) {
|
||||||
|
if (strcmp(name, autoid->name) == 0)
|
||||||
RETURN_STATUS(bc_error("function parameter or auto var has the same name as another"));
|
RETURN_STATUS(bc_error("function parameter or auto var has the same name as another"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5888,12 +5890,11 @@ static BC_STATUS zbc_program_call(char *code, size_t *idx)
|
|||||||
if (s) RETURN_STATUS(s);
|
if (s) RETURN_STATUS(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (; i < func->autos.len; ++i) {
|
a = bc_vec_item(&func->autos, i);
|
||||||
|
for (; i < func->autos.len; i++, a++) {
|
||||||
BcVec *v;
|
BcVec *v;
|
||||||
|
|
||||||
a = bc_vec_item(&func->autos, i);
|
|
||||||
v = bc_program_search(a->name, a->idx);
|
v = bc_program_search(a->name, a->idx);
|
||||||
|
|
||||||
if (a->idx) {
|
if (a->idx) {
|
||||||
BcNum n2;
|
BcNum n2;
|
||||||
bc_num_init_DEF_SIZE(&n2);
|
bc_num_init_DEF_SIZE(&n2);
|
||||||
@ -5915,6 +5916,7 @@ static BC_STATUS zbc_program_return(char inst)
|
|||||||
{
|
{
|
||||||
BcResult res;
|
BcResult res;
|
||||||
BcFunc *f;
|
BcFunc *f;
|
||||||
|
BcId *a;
|
||||||
size_t i;
|
size_t i;
|
||||||
BcInstPtr *ip = bc_vec_top(&G.prog.exestack);
|
BcInstPtr *ip = bc_vec_top(&G.prog.exestack);
|
||||||
|
|
||||||
@ -5939,10 +5941,9 @@ static BC_STATUS zbc_program_return(char inst)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 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.
|
||||||
for (i = 0; i < f->autos.len; ++i) {
|
a = (void*)f->autos.v;
|
||||||
|
for (i = 0; i < f->autos.len; i++, a++) {
|
||||||
BcVec *v;
|
BcVec *v;
|
||||||
BcId *a = bc_vec_item(&f->autos, i);
|
|
||||||
|
|
||||||
v = bc_program_search(a->name, a->idx);
|
v = bc_program_search(a->name, a->idx);
|
||||||
bc_vec_pop(v);
|
bc_vec_pop(v);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user