Skip to content

Commit

Permalink
compile.c: dump iseq
Browse files Browse the repository at this point in the history
* compile.c (append_compile_error): raise a fatal error when
  compile_debug is enabled.

* compile.c (COMPILE_ERROR): dump the disassembled instruction
  instruction sequence always.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59212 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed Jun 30, 2017
1 parent 3bf4c46 commit 703675d
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions compile.c
Expand Up @@ -321,7 +321,9 @@ struct iseq_compile_data_ensure_node_stack {
#define IS_INSN_ID(iobj, insn) (INSN_OF(iobj) == BIN(insn))

/* error */
typedef void (*compile_error_func)(rb_iseq_t *, int, const char *, ...);
#if CPDEBUG > 0
NORETURN(static void append_compile_error(rb_iseq_t *iseq, int line, const char *fmt, ...));
#endif

static void
append_compile_error(rb_iseq_t *iseq, int line, const char *fmt, ...)
Expand All @@ -341,6 +343,7 @@ append_compile_error(rb_iseq_t *iseq, int line, const char *fmt, ...)
else if (!err_info) {
RB_OBJ_WRITE(iseq, &ISEQ_COMPILE_DATA(iseq)->err_info, Qtrue);
}
if (compile_debug) rb_exc_fatal(err);
}

static void
Expand All @@ -353,16 +356,7 @@ compile_bug(rb_iseq_t *iseq, int line, const char *fmt, ...)
abort();
}

NOINLINE(static compile_error_func prepare_compile_error(rb_iseq_t *iseq));

static compile_error_func
prepare_compile_error(rb_iseq_t *iseq)
{
if (compile_debug) return &compile_bug;
return &append_compile_error;
}

#define COMPILE_ERROR prepare_compile_error(iseq)
#define COMPILE_ERROR append_compile_error

#define ERROR_ARGS_AT(n) iseq, nd_line(n),
#define ERROR_ARGS ERROR_ARGS_AT(node)
Expand Down

0 comments on commit 703675d

Please sign in to comment.