aboutsummaryrefslogtreecommitdiff
path: root/miscutils
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-12-21 23:01:26 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2018-12-21 23:01:26 +0100
commit24e41946355a77b97b43bc64a2a9861c0185f88a (patch)
tree0213dc2a5c00dece4f2d2a82fcc3b07ffef710d4 /miscutils
parent8287b1c869564ad90c0b8fac64551bfef4f6eee0 (diff)
downloadbusybox-w32-24e41946355a77b97b43bc64a2a9861c0185f88a.tar.gz
busybox-w32-24e41946355a77b97b43bc64a2a9861c0185f88a.tar.bz2
busybox-w32-24e41946355a77b97b43bc64a2a9861c0185f88a.zip
bc: rename BcInstPtr::idx and ::len
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils')
-rw-r--r--miscutils/bc.c57
1 files changed, 28 insertions, 29 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index cf620f8ec..2ba530d43 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -388,8 +388,8 @@ typedef struct BcResult {
388 388
389typedef struct BcInstPtr { 389typedef struct BcInstPtr {
390 size_t func; 390 size_t func;
391 size_t idx; 391 size_t inst_idx;
392 IF_BC(size_t len;) 392 IF_BC(size_t results_len_before_call;)
393} BcInstPtr; 393} BcInstPtr;
394 394
395// BC_LEX_NEG is not used in lexing; it is only for parsing. 395// BC_LEX_NEG is not used in lexing; it is only for parsing.
@@ -3600,7 +3600,7 @@ static void bc_program_reset(void)
3600 3600
3601 f = bc_program_func_BC_PROG_MAIN(); 3601 f = bc_program_func_BC_PROG_MAIN();
3602 ip = bc_vec_top(&G.prog.exestack); 3602 ip = bc_vec_top(&G.prog.exestack);
3603 ip->idx = f->code.len; 3603 ip->inst_idx = f->code.len;
3604} 3604}
3605 3605
3606// Called when zbc/zdc_parse_parse() detects a failure, 3606// Called when zbc/zdc_parse_parse() detects a failure,
@@ -5252,8 +5252,8 @@ static BC_STATUS zbc_program_read(void)
5252 } 5252 }
5253 5253
5254 ip.func = BC_PROG_READ; 5254 ip.func = BC_PROG_READ;
5255 ip.idx = 0; 5255 ip.inst_idx = 0;
5256 IF_BC(ip.len = G.prog.results.len;) 5256 IF_BC(ip.results_len_before_call = G.prog.results.len;)
5257 5257
5258 // Update this pointer, just in case. 5258 // Update this pointer, just in case.
5259 f = bc_program_func(BC_PROG_READ); 5259 f = bc_program_func(BC_PROG_READ);
@@ -5945,7 +5945,7 @@ static BC_STATUS zbc_program_call(char *code, size_t *idx)
5945 BcResult *arg; 5945 BcResult *arg;
5946 5946
5947 nparams = bc_program_index(code, idx); 5947 nparams = bc_program_index(code, idx);
5948 ip.idx = 0; 5948 ip.inst_idx = 0;
5949 ip.func = bc_program_index(code, idx); 5949 ip.func = bc_program_index(code, idx);
5950 func = bc_program_func(ip.func); 5950 func = bc_program_func(ip.func);
5951 5951
@@ -5955,7 +5955,7 @@ static BC_STATUS zbc_program_call(char *code, size_t *idx)
5955 if (nparams != func->nparams) { 5955 if (nparams != func->nparams) {
5956 RETURN_STATUS(bc_error_fmt("function has %u parameters, but called with %u", func->nparams, nparams)); 5956 RETURN_STATUS(bc_error_fmt("function has %u parameters, but called with %u", func->nparams, nparams));
5957 } 5957 }
5958 ip.len = G.prog.results.len - nparams; 5958 ip.results_len_before_call = G.prog.results.len - nparams;
5959 5959
5960 for (i = 0; i < nparams; ++i) { 5960 for (i = 0; i < nparams; ++i) {
5961 BcStatus s; 5961 BcStatus s;
@@ -6000,7 +6000,7 @@ static BC_STATUS zbc_program_return(char inst)
6000 size_t i; 6000 size_t i;
6001 BcInstPtr *ip = bc_vec_top(&G.prog.exestack); 6001 BcInstPtr *ip = bc_vec_top(&G.prog.exestack);
6002 6002
6003 if (!STACK_HAS_EQUAL_OR_MORE_THAN(&G.prog.results, ip->len + (inst == BC_INST_RET))) 6003 if (!STACK_HAS_EQUAL_OR_MORE_THAN(&G.prog.results, ip->results_len_before_call + (inst == BC_INST_RET)))
6004 RETURN_STATUS(bc_error_stack_has_too_few_elements()); 6004 RETURN_STATUS(bc_error_stack_has_too_few_elements());
6005 6005
6006 f = bc_program_func(ip->func); 6006 f = bc_program_func(ip->func);
@@ -6028,7 +6028,7 @@ static BC_STATUS zbc_program_return(char inst)
6028 bc_vec_pop(v); 6028 bc_vec_pop(v);
6029 } 6029 }
6030 6030
6031 bc_vec_npop(&G.prog.results, G.prog.results.len - ip->len); 6031 bc_vec_npop(&G.prog.results, G.prog.results.len - ip->results_len_before_call);
6032 bc_vec_push(&G.prog.results, &res); 6032 bc_vec_push(&G.prog.results, &res);
6033 bc_vec_pop(&G.prog.exestack); 6033 bc_vec_pop(&G.prog.exestack);
6034 6034
@@ -6391,8 +6391,7 @@ static BC_STATUS zdc_program_execStr(char *code, size_t *bgn, bool cond)
6391 bc_parse_free(&prs); 6391 bc_parse_free(&prs);
6392 } 6392 }
6393 6393
6394 ip.idx = 0; 6394 ip.inst_idx = 0;
6395 IF_BC(ip.len = G.prog.results.len;)
6396 ip.func = fidx; 6395 ip.func = fidx;
6397 6396
6398 bc_vec_pop(&G.prog.results); 6397 bc_vec_pop(&G.prog.results);
@@ -6433,12 +6432,12 @@ static BC_STATUS zbc_program_exec(void)
6433 char *code = func->code.v; 6432 char *code = func->code.v;
6434 6433
6435 dbg_exec("func:%zd bytes:%zd ip:%zd results.len:%d", 6434 dbg_exec("func:%zd bytes:%zd ip:%zd results.len:%d",
6436 ip->func, func->code.len, ip->idx, G.prog.results.len); 6435 ip->func, func->code.len, ip->inst_idx, G.prog.results.len);
6437 while (ip->idx < func->code.len) { 6436 while (ip->inst_idx < func->code.len) {
6438 BcStatus s = BC_STATUS_SUCCESS; 6437 BcStatus s = BC_STATUS_SUCCESS;
6439 char inst = code[ip->idx++]; 6438 char inst = code[ip->inst_idx++];
6440 6439
6441 dbg_exec("inst at %zd:%d results.len:%d", ip->idx - 1, inst, G.prog.results.len); 6440 dbg_exec("inst at %zd:%d results.len:%d", ip->inst_idx - 1, inst, G.prog.results.len);
6442 switch (inst) { 6441 switch (inst) {
6443#if ENABLE_BC 6442#if ENABLE_BC
6444 case BC_INST_JUMP_ZERO: { 6443 case BC_INST_JUMP_ZERO: {
@@ -6449,21 +6448,21 @@ static BC_STATUS zbc_program_exec(void)
6449 zero = (bc_num_cmp(num, &G.prog.zero) == 0); 6448 zero = (bc_num_cmp(num, &G.prog.zero) == 0);
6450 bc_vec_pop(&G.prog.results); 6449 bc_vec_pop(&G.prog.results);
6451 if (!zero) { 6450 if (!zero) {
6452 bc_program_index(code, &ip->idx); 6451 bc_program_index(code, &ip->inst_idx);
6453 break; 6452 break;
6454 } 6453 }
6455 // else: fall through 6454 // else: fall through
6456 } 6455 }
6457 case BC_INST_JUMP: { 6456 case BC_INST_JUMP: {
6458 size_t idx = bc_program_index(code, &ip->idx); 6457 size_t idx = bc_program_index(code, &ip->inst_idx);
6459 size_t *addr = bc_vec_item(&func->labels, idx); 6458 size_t *addr = bc_vec_item(&func->labels, idx);
6460 dbg_exec("BC_INST_JUMP: to %ld", (long)*addr); 6459 dbg_exec("BC_INST_JUMP: to %ld", (long)*addr);
6461 ip->idx = *addr; 6460 ip->inst_idx = *addr;
6462 break; 6461 break;
6463 } 6462 }
6464 case BC_INST_CALL: 6463 case BC_INST_CALL:
6465 dbg_exec("BC_INST_CALL:"); 6464 dbg_exec("BC_INST_CALL:");
6466 s = zbc_program_call(code, &ip->idx); 6465 s = zbc_program_call(code, &ip->inst_idx);
6467 goto read_updated_ip; 6466 goto read_updated_ip;
6468 case BC_INST_INC_PRE: 6467 case BC_INST_INC_PRE:
6469 case BC_INST_DEC_PRE: 6468 case BC_INST_DEC_PRE:
@@ -6499,12 +6498,12 @@ static BC_STATUS zbc_program_exec(void)
6499 goto read_updated_ip; 6498 goto read_updated_ip;
6500 case BC_INST_VAR: 6499 case BC_INST_VAR:
6501 dbg_exec("BC_INST_VAR:"); 6500 dbg_exec("BC_INST_VAR:");
6502 s = zbc_program_pushVar(code, &ip->idx, false, false); 6501 s = zbc_program_pushVar(code, &ip->inst_idx, false, false);
6503 break; 6502 break;
6504 case BC_INST_ARRAY_ELEM: 6503 case BC_INST_ARRAY_ELEM:
6505 case BC_INST_ARRAY: 6504 case BC_INST_ARRAY:
6506 dbg_exec("BC_INST_ARRAY[_ELEM]:"); 6505 dbg_exec("BC_INST_ARRAY[_ELEM]:");
6507 s = zbc_program_pushArray(code, &ip->idx, inst); 6506 s = zbc_program_pushArray(code, &ip->inst_idx, inst);
6508 break; 6507 break;
6509 case BC_INST_LAST: 6508 case BC_INST_LAST:
6510 r.t = BC_RESULT_LAST; 6509 r.t = BC_RESULT_LAST;
@@ -6524,7 +6523,7 @@ static BC_STATUS zbc_program_exec(void)
6524 case BC_INST_NUM: 6523 case BC_INST_NUM:
6525 dbg_exec("BC_INST_NUM:"); 6524 dbg_exec("BC_INST_NUM:");
6526 r.t = BC_RESULT_CONSTANT; 6525 r.t = BC_RESULT_CONSTANT;
6527 r.d.id.idx = bc_program_index(code, &ip->idx); 6526 r.d.id.idx = bc_program_index(code, &ip->inst_idx);
6528 bc_vec_push(&G.prog.results, &r); 6527 bc_vec_push(&G.prog.results, &r);
6529 break; 6528 break;
6530 case BC_INST_POP: 6529 case BC_INST_POP:
@@ -6547,7 +6546,7 @@ static BC_STATUS zbc_program_exec(void)
6547 case BC_INST_STR: 6546 case BC_INST_STR:
6548 dbg_exec("BC_INST_STR:"); 6547 dbg_exec("BC_INST_STR:");
6549 r.t = BC_RESULT_STR; 6548 r.t = BC_RESULT_STR;
6550 r.d.id.idx = bc_program_index(code, &ip->idx); 6549 r.d.id.idx = bc_program_index(code, &ip->inst_idx);
6551 bc_vec_push(&G.prog.results, &r); 6550 bc_vec_push(&G.prog.results, &r);
6552 break; 6551 break;
6553 case BC_INST_POWER: 6552 case BC_INST_POWER:
@@ -6594,7 +6593,7 @@ static BC_STATUS zbc_program_exec(void)
6594 break; 6593 break;
6595 case BC_INST_EXECUTE: 6594 case BC_INST_EXECUTE:
6596 case BC_INST_EXEC_COND: 6595 case BC_INST_EXEC_COND:
6597 s = zdc_program_execStr(code, &ip->idx, inst == BC_INST_EXEC_COND); 6596 s = zdc_program_execStr(code, &ip->inst_idx, inst == BC_INST_EXEC_COND);
6598 goto read_updated_ip; 6597 goto read_updated_ip;
6599 case BC_INST_PRINT_STACK: { 6598 case BC_INST_PRINT_STACK: {
6600 size_t idx; 6599 size_t idx;
@@ -6637,11 +6636,11 @@ static BC_STATUS zbc_program_exec(void)
6637 case BC_INST_LOAD: 6636 case BC_INST_LOAD:
6638 case BC_INST_PUSH_VAR: { 6637 case BC_INST_PUSH_VAR: {
6639 bool copy = inst == BC_INST_LOAD; 6638 bool copy = inst == BC_INST_LOAD;
6640 s = zbc_program_pushVar(code, &ip->idx, true, copy); 6639 s = zbc_program_pushVar(code, &ip->inst_idx, true, copy);
6641 break; 6640 break;
6642 } 6641 }
6643 case BC_INST_PUSH_TO_VAR: { 6642 case BC_INST_PUSH_TO_VAR: {
6644 char *name = bc_program_name(code, &ip->idx); 6643 char *name = bc_program_name(code, &ip->inst_idx);
6645 s = zbc_program_copyToVar(name, true); 6644 s = zbc_program_copyToVar(name, true);
6646 free(name); 6645 free(name);
6647 break; 6646 break;
@@ -6661,7 +6660,7 @@ static BC_STATUS zbc_program_exec(void)
6661 ip = bc_vec_top(&G.prog.exestack); 6660 ip = bc_vec_top(&G.prog.exestack);
6662 func = bc_program_func(ip->func); 6661 func = bc_program_func(ip->func);
6663 code = func->code.v; 6662 code = func->code.v;
6664 dbg_exec("func:%zd bytes:%zd ip:%zd", ip->func, func->code.len, ip->idx); 6663 dbg_exec("func:%zd bytes:%zd ip:%zd", ip->func, func->code.len, ip->inst_idx);
6665 } 6664 }
6666 6665
6667 if (s || G_interrupt) { 6666 if (s || G_interrupt) {
@@ -6731,11 +6730,11 @@ static BC_STATUS zbc_vm_process(const char *text)
6731 if (ip->func != BC_PROG_MAIN) 6730 if (ip->func != BC_PROG_MAIN)
6732 bb_error_msg_and_die("BUG:not MAIN"); 6731 bb_error_msg_and_die("BUG:not MAIN");
6733#endif 6732#endif
6734//bb_error_msg("ip->func:%d >idx:%d >len:%d", ip->func, ip->idx, ip->len); 6733//bb_error_msg("ip->func:%d >idx:%d >len:%d", ip->func, ip->inst_idx, ip->len);
6735 f = bc_program_func_BC_PROG_MAIN(); 6734 f = bc_program_func_BC_PROG_MAIN();
6736//bb_error_msg("MAIN->code.len:%d >strs.len:%d >consts.len:%d", f->code.len, f->strs.len, f->consts.len); // labels, autos, nparams 6735//bb_error_msg("MAIN->code.len:%d >strs.len:%d >consts.len:%d", f->code.len, f->strs.len, f->consts.len); // labels, autos, nparams
6737 bc_vec_pop_all(&f->code); 6736 bc_vec_pop_all(&f->code);
6738 ip->idx = 0; 6737 ip->inst_idx = 0;
6739 IF_BC(bc_vec_pop_all(&f->strs);) 6738 IF_BC(bc_vec_pop_all(&f->strs);)
6740 IF_BC(bc_vec_pop_all(&f->consts);) 6739 IF_BC(bc_vec_pop_all(&f->consts);)
6741 } 6740 }