diff options
Diffstat (limited to 'debug.c')
-rw-r--r-- | debug.c | 27 |
1 files changed, 14 insertions, 13 deletions
@@ -841,7 +841,7 @@ do_info(CMDARG *arg, int cmd ATTRIBUTE_UNUSED) return false; } - pcount = func->param_cnt; /* # of defined params */ + pcount = func->frame_cnt; /* # of defined params/locals */ pc = (INSTRUCTION *) f->reti; /* Op_func_call instruction */ arg_count = (pc + 1)->expr_count; /* # of arguments supplied */ @@ -861,7 +861,7 @@ do_info(CMDARG *arg, int cmd ATTRIBUTE_UNUSED) r = f->stack[i]; if (r->type == Node_array_ref) r = r->orig_array; - fprintf(out_fp, "%s = ", func->fparms[i].param); + fprintf(out_fp, "%s = ", func->fparms[i]->param); print_symbol(r, true); } if (to < from) @@ -998,7 +998,7 @@ find_frame(long num) return fcall_list[num]; } -/* find_param --- find a function parameter in a given frame number */ +/* find_param --- find a function parameter/local in a given frame number */ static NODE * find_param(const char *name, long num, char **pname) @@ -1018,9 +1018,9 @@ find_param(const char *name, long num, char **pname) int i, pcount; func = f->func_node; - pcount = func->param_cnt; + pcount = func->frame_cnt; for (i = 0; i < pcount; i++) { - fparam = func->fparms[i].param; + fparam = func->fparms[i]->param; if (strcmp(name, fparam) == 0) { r = f->stack[i]; if (r->type == Node_array_ref) @@ -1917,7 +1917,7 @@ print_function(INSTRUCTION *pc, void *x) print_func(fp, "%s(", func->vname); for (i = 0; i < pcount; i++) { - print_func(fp, "%s", func->fparms[i].param); + print_func(fp, "%s", func->fparms[i]->param); if (i < pcount - 1) print_func(fp, ", "); } @@ -3744,7 +3744,7 @@ print_memory(NODE *m, NODE *func, Func_print print_func, FILE *fp) case Node_param_list: assert(func != NULL); - print_func(fp, "%s", func->fparms[m->param_cnt].param); + print_func(fp, "%s", func->fparms[m->param_cnt]->param); break; case Node_var: @@ -3781,7 +3781,7 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump) int j; print_func(fp, "\n\t# Function: %s (", func->vname); for (j = 0; j < pcount; j++) { - print_func(fp, "%s", func->fparms[j].param); + print_func(fp, "%s", func->fparms[j]->param); if (j < pcount - 1) print_func(fp, ", "); } @@ -3990,7 +3990,7 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump) case Op_arrayfor_incr: print_func(fp, "[array_var = %s] [target_jmp = " PTRFMT "]\n", pc->array_var->type == Node_param_list ? - func->fparms[pc->array_var->param_cnt].param : pc->array_var->vname, + func->fparms[pc->array_var->param_cnt]->param : pc->array_var->vname, pc->target_jmp); break; @@ -4132,6 +4132,7 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump) case Op_quotient_i: case Op_mod_i: case Op_assign_concat: + case Op_clear_var: print_memory(pc->memory, func, print_func, fp); /* fall through */ default: @@ -5614,7 +5615,7 @@ do_eval(CMDARG *arg, int cmd ATTRIBUTE_UNUSED) do_flags &= DO_MPFR; // preserve this flag only ret = parse_program(&code, true); do_flags = save_flags; - remove_params(this_func); + remove_locals(this_func); if (ret != 0) { pop_context(); /* switch to prev context */ free_context(ctxt, false /* keep_globals */); @@ -5650,7 +5651,7 @@ do_eval(CMDARG *arg, int cmd ATTRIBUTE_UNUSED) t->opcode = Op_stop; /* add or append eval locals to the current frame stack */ - ecount = f->param_cnt; /* eval local count */ + ecount = f->frame_cnt; /* eval local count */ pcount = this_func->param_cnt; if (ecount > 0) { @@ -5663,7 +5664,7 @@ do_eval(CMDARG *arg, int cmd ATTRIBUTE_UNUSED) for (i = 0; i < ecount; i++) { NODE *np; - np = f->fparms + i; + np = f->fparms[i]; np->param_cnt += pcount; /* appending eval locals: fixup param_cnt */ getnode(r); @@ -5806,7 +5807,7 @@ parse_condition(int type, int num, char *expr) do_flags = false; ret = parse_program(&code, true); do_flags = save_flags; - remove_params(this_func); + remove_locals(this_func); pop_context(); if (ret != 0 || invalid_symbol) { |