diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2016-03-03 21:01:00 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2016-03-03 21:01:00 +0200 |
commit | 596cc77d097139e34be50240a60e849d423a3f4a (patch) | |
tree | bec1fd0aba6da95ea24921b132af1d50cc48fb23 | |
parent | 7ea8855c0c000f407499073c930ca4bd92994af8 (diff) | |
parent | d78adb29468012f54dd029e021d83eb668f19a7d (diff) | |
download | egawk-596cc77d097139e34be50240a60e849d423a3f4a.tar.gz egawk-596cc77d097139e34be50240a60e849d423a3f4a.tar.bz2 egawk-596cc77d097139e34be50240a60e849d423a3f4a.zip |
Merge branch 'master' into feature/cmake
-rw-r--r-- | ChangeLog | 20 | ||||
-rw-r--r-- | debug.c | 19 | ||||
-rw-r--r-- | profile.c | 42 |
3 files changed, 61 insertions, 20 deletions
@@ -1,3 +1,23 @@ +2016-03-03 Arnold D. Robbins <arnold@skeeve.com> + + * profile.c (pp_list): Unconditionally compute delimlen. Avoids + compiler warning. + +2016-03-02 Arnold D. Robbins <arnold@skeeve.com> + + * debug.c (print_instruction): Improvements in instruction dump + for if and else. + +2016-03-01 Arnold D. Robbins <arnold@skeeve.com> + + * debug.c (print_instruction): For Op_comment, add notation as + to whether it's a full comment or an end of line comment. + +2016-02-29 Arnold D. Robbins <arnold@skeeve.com> + + * profile.c (pp_list): Handle the case of nargs equal to zero. + Thanks to Hermann Peifer for the report. + 2016-02-28 Arnold D. Robbins <arnold@skeeve.com> * profile.c (pprint): Fix copy-paste error in else handling. @@ -3796,6 +3796,15 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump) switch (pc->opcode) { + case Op_K_if: + print_func(fp, "[branch_if = %p] [branch_else = %p] [branch_else->lasti = %p]\n", + pc->branch_if, pc->branch_else, pc->branch_else->lasti); + break; + + case Op_K_else: + print_func(fp, "[branch_end = %p]\n", pc->branch_end); + break; + case Op_var_update: print_func(fp, "[update_%s()]\n", get_spec_varname(pc->update_var)); break; @@ -3998,7 +4007,14 @@ print_instruction(INSTRUCTION *pc, Func_print print_func, FILE *fp, int in_dump) print_func(fp, " [do_reference = %s]\n", pc->do_reference ? "true" : "false"); break; - + + case Op_comment: + print_memory(pc->memory, func, print_func, fp); + fprintf(fp, " {%s}\n", + pc->memory->comment_type == EOL_COMMENT ? + "eol" : "full"); + break; + case Op_push_i: case Op_push: case Op_push_arg: @@ -4016,7 +4032,6 @@ 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_comment: print_memory(pc->memory, func, print_func, fp); /* fall through */ default: @@ -1539,33 +1539,39 @@ pp_list(int nargs, const char *paren, const char *delim) } delimlen = strlen(delim); - len = -delimlen; - for (i = 1; i <= nargs; i++) { - r = pp_args[i] = pp_pop(); - len += r->pp_len + delimlen; - } - if (paren != NULL) { - assert(strlen(paren) == 2); - len += 2; + if (nargs == 0) + len = 2; + else { + len = -delimlen; + for (i = 1; i <= nargs; i++) { + r = pp_args[i] = pp_pop(); + len += r->pp_len + delimlen; + } + if (paren != NULL) { + assert(strlen(paren) == 2); + len += 2; + } } emalloc(str, char *, len + 1, "pp_list"); s = str; if (paren != NULL) *s++ = paren[0]; - r = pp_args[nargs]; - memcpy(s, r->pp_str, r->pp_len); - s += r->pp_len; - pp_free(r); - for (i = nargs - 1; i > 0; i--) { - if (delimlen > 0) { - memcpy(s, delim, delimlen); - s += delimlen; - } - r = pp_args[i]; + if (nargs > 0) { + r = pp_args[nargs]; memcpy(s, r->pp_str, r->pp_len); s += r->pp_len; pp_free(r); + for (i = nargs - 1; i > 0; i--) { + if (delimlen > 0) { + memcpy(s, delim, delimlen); + s += delimlen; + } + r = pp_args[i]; + memcpy(s, r->pp_str, r->pp_len); + s += r->pp_len; + pp_free(r); + } } if (paren != NULL) *s++ = paren[1]; |