aboutsummaryrefslogtreecommitdiffstats
path: root/debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'debug.c')
-rw-r--r--debug.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/debug.c b/debug.c
index 2849a4c1..b343e427 100644
--- a/debug.c
+++ b/debug.c
@@ -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) {