Skip to content

Commit

Permalink
compile.c: refine error messages
Browse files Browse the repository at this point in the history
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59071 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed Jun 13, 2017
1 parent a100bf3 commit a784132
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions compile.c
Original file line number Diff line number Diff line change
Expand Up @@ -1562,6 +1562,12 @@ get_ivar_ic_value(rb_iseq_t *iseq,ID id)
return val;
}

#define BADINSN_ERROR \
(xfree(generated_iseq), \
xfree(line_info_table), \
dump_disasm_list_with_cursor(&anchor->anchor, list), \
COMPILE_ERROR)

/**
ruby insn object list -> raw instruction sequence
*/
Expand Down Expand Up @@ -1610,9 +1616,7 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
break;
}
default:
dump_disasm_list(FIRST_ELEMENT(anchor));
dump_disasm_list(list);
COMPILE_ERROR(iseq, line, "error: set_sequence");
BADINSN_ERROR(iseq, line, "unknown list type: %d", list->type);
return COMPILE_NG;
}
list = list->next;
Expand All @@ -1631,12 +1635,6 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
list = FIRST_ELEMENT(anchor);
line_info_index = code_index = sp = 0;

#define BADINSN_ERROR \
(dump_disasm_list_with_cursor(&anchor->anchor, list), \
xfree(generated_iseq), \
xfree(line_info_table), \
COMPILE_ERROR)

while (list) {
switch (list->type) {
case ISEQ_ELEMENT_INSN:
Expand Down Expand Up @@ -1683,7 +1681,7 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
LABEL *lobj = (LABEL *)operands[j];
if (!lobj->set) {
BADINSN_ERROR(iseq, iobj->line_no,
"unknown label");
"unknown label: "LABEL_FORMAT, lobj->label_no);
return COMPILE_NG;
}
if (lobj->sp == -1) {
Expand Down

0 comments on commit a784132

Please sign in to comment.