compile.c: remove dead code

* compile.c (DECL_ANCHOR, INIT_ANCHOR): make anchor name an array
  and unassignable.

* compile.c (iseq_compile_each): ret is never 0.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2016-12-07 08:44:34 +00:00
parent f2b6e9f05f
commit 8d879ca305

115
compile.c
View File

@ -404,9 +404,9 @@ do { \
/* leave name uninitialized so that compiler warn if INIT_ANCHOR is /* leave name uninitialized so that compiler warn if INIT_ANCHOR is
* missing */ * missing */
#define DECL_ANCHOR(name) \ #define DECL_ANCHOR(name) \
LINK_ANCHOR *name, name##_body__ = {{0,},} LINK_ANCHOR name[1] = {{{0,},}}
#define INIT_ANCHOR(name) \ #define INIT_ANCHOR(name) \
(name##_body__.last = &name##_body__.anchor, name = &name##_body__) (name->last = &name->anchor)
static inline VALUE static inline VALUE
freeze_hide_obj(VALUE obj) freeze_hide_obj(VALUE obj)
@ -443,17 +443,17 @@ static INSN *new_insn_body(rb_iseq_t *iseq, int line_no, enum ruby_vminsn_type i
static LABEL *new_label_body(rb_iseq_t *iseq, long line); static LABEL *new_label_body(rb_iseq_t *iseq, long line);
static ADJUST *new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line); static ADJUST *new_adjust_body(rb_iseq_t *iseq, LABEL *label, int line);
static int iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *anchor, NODE * n, int); static int iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *const anchor, NODE *n, int);
static int iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *anchor); static int iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
static int iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *anchor); static int iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
static int iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *anchor); static int iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
static int iseq_set_local_table(rb_iseq_t *iseq, const ID *tbl); static int iseq_set_local_table(rb_iseq_t *iseq, const ID *tbl);
static int iseq_set_exception_local_table(rb_iseq_t *iseq); static int iseq_set_exception_local_table(rb_iseq_t *iseq);
static int iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *anchor, NODE * node); static int iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *const anchor, NODE *node);
static int iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *anchor); static int iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
static int iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor); static int iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor);
static int iseq_set_exception_table(rb_iseq_t *iseq); static int iseq_set_exception_table(rb_iseq_t *iseq);
static int iseq_set_optargs_table(rb_iseq_t *iseq); static int iseq_set_optargs_table(rb_iseq_t *iseq);
@ -462,7 +462,7 @@ static int iseq_set_optargs_table(rb_iseq_t *iseq);
*/ */
static void static void
verify_list(ISEQ_ARG_DECLARE const char *info, LINK_ANCHOR *anchor) verify_list(ISEQ_ARG_DECLARE const char *info, LINK_ANCHOR *const anchor)
{ {
#if CPDEBUG #if CPDEBUG
int flag = 0; int flag = 0;
@ -497,7 +497,7 @@ verify_list(ISEQ_ARG_DECLARE const char *info, LINK_ANCHOR *anchor)
* elem1, elem2 => elem1, elem2, elem * elem1, elem2 => elem1, elem2, elem
*/ */
static void static void
ADD_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor, LINK_ELEMENT *elem) ADD_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor, LINK_ELEMENT *elem)
{ {
elem->prev = anchor->last; elem->prev = anchor->last;
anchor->last->next = elem; anchor->last->next = elem;
@ -509,7 +509,7 @@ ADD_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor, LINK_ELEMENT *elem)
* elem1, before, elem2 => elem1, before, elem, elem2 * elem1, before, elem2 => elem1, before, elem, elem2
*/ */
static void static void
APPEND_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor, LINK_ELEMENT *before, LINK_ELEMENT *elem) APPEND_ELEM(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor, LINK_ELEMENT *before, LINK_ELEMENT *elem)
{ {
elem->prev = before; elem->prev = before;
elem->next = before->next; elem->next = before->next;
@ -900,19 +900,19 @@ REMOVE_ELEM(LINK_ELEMENT *elem)
} }
static LINK_ELEMENT * static LINK_ELEMENT *
FIRST_ELEMENT(LINK_ANCHOR *anchor) FIRST_ELEMENT(LINK_ANCHOR *const anchor)
{ {
return anchor->anchor.next; return anchor->anchor.next;
} }
static LINK_ELEMENT * static LINK_ELEMENT *
LAST_ELEMENT(LINK_ANCHOR *anchor) LAST_ELEMENT(LINK_ANCHOR *const anchor)
{ {
return anchor->last; return anchor->last;
} }
static LINK_ELEMENT * static LINK_ELEMENT *
POP_ELEMENT(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor) POP_ELEMENT(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor)
{ {
LINK_ELEMENT *elem = anchor->last; LINK_ELEMENT *elem = anchor->last;
anchor->last = anchor->last->prev; anchor->last = anchor->last->prev;
@ -925,7 +925,7 @@ POP_ELEMENT(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor)
#endif #endif
static int static int
LIST_SIZE_ZERO(LINK_ANCHOR *anchor) LIST_SIZE_ZERO(LINK_ANCHOR *const anchor)
{ {
if (anchor->anchor.next == 0) { if (anchor->anchor.next == 0) {
return 1; return 1;
@ -943,7 +943,7 @@ LIST_SIZE_ZERO(LINK_ANCHOR *anchor)
* anc2: e4, e5 (broken) * anc2: e4, e5 (broken)
*/ */
static void static void
APPEND_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *anc1, LINK_ANCHOR *anc2) APPEND_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *const anc1, LINK_ANCHOR *const anc2)
{ {
if (anc2->anchor.next) { if (anc2->anchor.next) {
anc1->last->next = anc2->anchor.next; anc1->last->next = anc2->anchor.next;
@ -964,7 +964,7 @@ APPEND_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *anc1, LINK_ANCHOR *anc2)
* anc2: e4, e5 (broken) * anc2: e4, e5 (broken)
*/ */
static void static void
INSERT_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *anc1, LINK_ANCHOR *anc2) INSERT_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *const anc1, LINK_ANCHOR *const anc2)
{ {
if (anc2->anchor.next) { if (anc2->anchor.next) {
LINK_ELEMENT *first = anc1->anchor.next; LINK_ELEMENT *first = anc1->anchor.next;
@ -987,7 +987,7 @@ INSERT_LIST(ISEQ_ARG_DECLARE LINK_ANCHOR *anc1, LINK_ANCHOR *anc2)
#if CPDEBUG && 0 #if CPDEBUG && 0
static void static void
debug_list(ISEQ_ARG_DECLARE LINK_ANCHOR *anchor) debug_list(ISEQ_ARG_DECLARE LINK_ANCHOR *const anchor)
{ {
LINK_ELEMENT *list = FIRST_ELEMENT(anchor); LINK_ELEMENT *list = FIRST_ELEMENT(anchor);
printf("----\n"); printf("----\n");
@ -1126,7 +1126,7 @@ new_child_iseq(rb_iseq_t *iseq, NODE *node,
} }
static int static int
iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *anchor) iseq_setup(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
{ {
/* debugs("[compile step 2] (iseq_array_to_linkedlist)\n"); */ /* debugs("[compile step 2] (iseq_array_to_linkedlist)\n"); */
@ -1289,7 +1289,8 @@ iseq_calc_param_size(rb_iseq_t *iseq)
} }
static void static void
iseq_set_arguments_keywords(rb_iseq_t *iseq, LINK_ANCHOR *optargs, const struct rb_args_info *args) iseq_set_arguments_keywords(rb_iseq_t *iseq, LINK_ANCHOR *const optargs,
const struct rb_args_info *args)
{ {
NODE *node = args->kw_args; NODE *node = args->kw_args;
struct rb_iseq_param_keyword *keyword; struct rb_iseq_param_keyword *keyword;
@ -1359,7 +1360,7 @@ iseq_set_arguments_keywords(rb_iseq_t *iseq, LINK_ANCHOR *optargs, const struct
} }
static int static int
iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args) iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *const optargs, NODE *node_args)
{ {
debugs("iseq_set_arguments: %s\n", node_args ? "" : "0"); debugs("iseq_set_arguments: %s\n", node_args ? "" : "0");
@ -1569,7 +1570,7 @@ get_ivar_ic_value(rb_iseq_t *iseq,ID id)
ruby insn object list -> raw instruction sequence ruby insn object list -> raw instruction sequence
*/ */
static int static int
iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor) iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
{ {
struct iseq_line_info_entry *line_info_table; struct iseq_line_info_entry *line_info_table;
unsigned int last_line = 0; unsigned int last_line = 0;
@ -2457,7 +2458,7 @@ tailcallable_p(rb_iseq_t *iseq)
} }
static int static int
iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *anchor) iseq_optimize(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
{ {
LINK_ELEMENT *list; LINK_ELEMENT *list;
const int do_peepholeopt = ISEQ_COMPILE_DATA(iseq)->option->peephole_optimization; const int do_peepholeopt = ISEQ_COMPILE_DATA(iseq)->option->peephole_optimization;
@ -2540,7 +2541,7 @@ new_unified_insn(rb_iseq_t *iseq,
* It's future work (if compile time was bottle neck). * It's future work (if compile time was bottle neck).
*/ */
static int static int
iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *anchor) iseq_insns_unification(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
{ {
#if OPT_INSTRUCTIONS_UNIFICATION #if OPT_INSTRUCTIONS_UNIFICATION
LINK_ELEMENT *list; LINK_ELEMENT *list;
@ -2654,7 +2655,7 @@ label_set_sc_state(LABEL *lobj, int state)
#endif #endif
static int static int
iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *anchor) iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
{ {
#if OPT_STACK_CACHING #if OPT_STACK_CACHING
LINK_ELEMENT *list; LINK_ELEMENT *list;
@ -2751,7 +2752,7 @@ iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
} }
static int static int
compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int *cntp) compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node, int *cntp)
{ {
NODE *list = node->nd_next; NODE *list = node->nd_next;
VALUE lit = node->nd_lit; VALUE lit = node->nd_lit;
@ -2793,7 +2794,7 @@ compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int *cntp)
} }
static int static int
compile_dstr(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node) compile_dstr(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node)
{ {
int cnt; int cnt;
compile_dstr_fragments(iseq, ret, node, &cnt); compile_dstr_fragments(iseq, ret, node, &cnt);
@ -2802,7 +2803,7 @@ compile_dstr(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node)
} }
static int static int
compile_dregx(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node) compile_dregx(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node)
{ {
int cnt; int cnt;
compile_dstr_fragments(iseq, ret, node, &cnt); compile_dstr_fragments(iseq, ret, node, &cnt);
@ -2811,7 +2812,7 @@ compile_dregx(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node)
} }
static int static int
compile_flip_flop(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int again, compile_flip_flop(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node, int again,
LABEL *then_label, LABEL *else_label) LABEL *then_label, LABEL *else_label)
{ {
const int line = nd_line(node); const int line = nd_line(node);
@ -2844,7 +2845,7 @@ compile_flip_flop(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int again,
} }
static int static int
compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * cond, compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *cond,
LABEL *then_label, LABEL *else_label) LABEL *then_label, LABEL *else_label)
{ {
switch (nd_type(cond)) { switch (nd_type(cond)) {
@ -2907,7 +2908,9 @@ compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * cond,
} }
static int static int
compile_array_keyword_arg(rb_iseq_t *iseq, LINK_ANCHOR *ret, const NODE * const root_node, struct rb_call_info_kw_arg ** const kw_arg_ptr) compile_array_keyword_arg(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
const NODE *const root_node,
struct rb_call_info_kw_arg **const kw_arg_ptr)
{ {
if (kw_arg_ptr == NULL) return FALSE; if (kw_arg_ptr == NULL) return FALSE;
@ -2959,7 +2962,7 @@ enum compile_array_type_t {
}; };
static int static int
compile_array_(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE* node_root, compile_array_(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE* node_root,
enum compile_array_type_t type, struct rb_call_info_kw_arg **keywords_ptr, int popped) enum compile_array_type_t type, struct rb_call_info_kw_arg **keywords_ptr, int popped)
{ {
NODE *node = node_root; NODE *node = node_root;
@ -3115,13 +3118,13 @@ compile_array_(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE* node_root,
} }
static VALUE static VALUE
compile_array(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE* node_root, enum compile_array_type_t type) compile_array(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE* node_root, enum compile_array_type_t type)
{ {
return compile_array_(iseq, ret, node_root, type, NULL, 0); return compile_array_(iseq, ret, node_root, type, NULL, 0);
} }
static VALUE static VALUE
case_when_optimizable_literal(NODE * node) case_when_optimizable_literal(NODE *node)
{ {
switch (nd_type(node)) { switch (nd_type(node)) {
case NODE_LIT: { case NODE_LIT: {
@ -3149,7 +3152,8 @@ case_when_optimizable_literal(NODE * node)
} }
static int static int
when_vals(rb_iseq_t *iseq, LINK_ANCHOR *cond_seq, NODE *vals, LABEL *l1, int only_special_literals, VALUE literals) when_vals(rb_iseq_t *iseq, LINK_ANCHOR *const cond_seq, NODE *vals,
LABEL *l1, int only_special_literals, VALUE literals)
{ {
while (vals) { while (vals) {
NODE* val = vals->nd_head; NODE* val = vals->nd_head;
@ -3187,7 +3191,7 @@ when_vals(rb_iseq_t *iseq, LINK_ANCHOR *cond_seq, NODE *vals, LABEL *l1, int onl
} }
static int static int
compile_massign_lhs(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node) compile_massign_lhs(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node)
{ {
switch (nd_type(node)) { switch (nd_type(node)) {
case NODE_ATTRASGN: { case NODE_ATTRASGN: {
@ -3233,7 +3237,7 @@ compile_massign_lhs(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node)
} }
static void static void
compile_massign_opt_lhs(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *lhsn) compile_massign_opt_lhs(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *lhsn)
{ {
if (lhsn) { if (lhsn) {
compile_massign_opt_lhs(iseq, ret, lhsn->nd_next); compile_massign_opt_lhs(iseq, ret, lhsn->nd_next);
@ -3242,7 +3246,7 @@ compile_massign_opt_lhs(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *lhsn)
} }
static int static int
compile_massign_opt(rb_iseq_t *iseq, LINK_ANCHOR *ret, compile_massign_opt(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
NODE *rhsn, NODE *orig_lhsn) NODE *rhsn, NODE *orig_lhsn)
{ {
VALUE mem[64]; VALUE mem[64];
@ -3307,7 +3311,7 @@ compile_massign_opt(rb_iseq_t *iseq, LINK_ANCHOR *ret,
} }
static void static void
adjust_stack(rb_iseq_t *iseq, LINK_ANCHOR *ret, int line, int rlen, int llen) adjust_stack(rb_iseq_t *iseq, LINK_ANCHOR *const ret, int line, int rlen, int llen)
{ {
if (rlen < llen) { if (rlen < llen) {
do {ADD_INSN(ret, line, putnil);} while (++rlen < llen); do {ADD_INSN(ret, line, putnil);} while (++rlen < llen);
@ -3318,7 +3322,7 @@ adjust_stack(rb_iseq_t *iseq, LINK_ANCHOR *ret, int line, int rlen, int llen)
} }
static int static int
compile_massign(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int popped) compile_massign(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node, int popped)
{ {
NODE *rhsn = node->nd_value; NODE *rhsn = node->nd_value;
NODE *splatn = node->nd_args; NODE *splatn = node->nd_args;
@ -3403,8 +3407,8 @@ compile_massign(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int popped)
} }
static int static int
compile_colon2(rb_iseq_t *iseq, NODE * node, compile_colon2(rb_iseq_t *iseq, NODE *node,
LINK_ANCHOR *pref, LINK_ANCHOR *body) LINK_ANCHOR *const pref, LINK_ANCHOR *const body)
{ {
switch (nd_type(node)) { switch (nd_type(node)) {
case NODE_CONST: case NODE_CONST:
@ -3430,7 +3434,7 @@ compile_colon2(rb_iseq_t *iseq, NODE * node,
} }
static VALUE static VALUE
compile_cpath(LINK_ANCHOR *ret, rb_iseq_t *iseq, NODE *cpath) compile_cpath(LINK_ANCHOR *const ret, rb_iseq_t *iseq, NODE *cpath)
{ {
if (nd_type(cpath) == NODE_COLON3) { if (nd_type(cpath) == NODE_COLON3) {
/* toplevel class ::Foo */ /* toplevel class ::Foo */
@ -3454,7 +3458,7 @@ compile_cpath(LINK_ANCHOR *ret, rb_iseq_t *iseq, NODE *cpath)
#define defined_expr defined_expr0 #define defined_expr defined_expr0
static int static int
defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret, defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
NODE *node, LABEL **lfinish, VALUE needstr) NODE *node, LABEL **lfinish, VALUE needstr)
{ {
enum defined_type expr_type = 0; enum defined_type expr_type = 0;
@ -3634,7 +3638,7 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,
#undef defined_expr #undef defined_expr
static int static int
defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret, defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
NODE *node, LABEL **lfinish, VALUE needstr) NODE *node, LABEL **lfinish, VALUE needstr)
{ {
LINK_ELEMENT *lcur = ret->last; LINK_ELEMENT *lcur = ret->last;
@ -3710,7 +3714,7 @@ add_ensure_range(rb_iseq_t *iseq, struct ensure_range *erange,
} }
static void static void
add_ensure_iseq(LINK_ANCHOR *ret, rb_iseq_t *iseq, int is_return) add_ensure_iseq(LINK_ANCHOR *const ret, rb_iseq_t *iseq, int is_return)
{ {
struct iseq_compile_data_ensure_node_stack *enlp = struct iseq_compile_data_ensure_node_stack *enlp =
ISEQ_COMPILE_DATA(iseq)->ensure_node_stack; ISEQ_COMPILE_DATA(iseq)->ensure_node_stack;
@ -3745,7 +3749,8 @@ add_ensure_iseq(LINK_ANCHOR *ret, rb_iseq_t *iseq, int is_return)
} }
static VALUE static VALUE
setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, unsigned int *flag, struct rb_call_info_kw_arg **keywords) setup_args(rb_iseq_t *iseq, LINK_ANCHOR *const args, NODE *argn,
unsigned int *flag, struct rb_call_info_kw_arg **keywords)
{ {
VALUE argc = INT2FIX(0); VALUE argc = INT2FIX(0);
int nsplat = 0; int nsplat = 0;
@ -3826,7 +3831,7 @@ setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, unsigned int *flag, s
} }
static VALUE static VALUE
build_postexe_iseq(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *body) build_postexe_iseq(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *body)
{ {
int line = nd_line(body); int line = nd_line(body);
VALUE argc = INT2FIX(0); VALUE argc = INT2FIX(0);
@ -3839,7 +3844,7 @@ build_postexe_iseq(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *body)
} }
static void static void
compile_named_capture_assign(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node) compile_named_capture_assign(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node)
{ {
NODE *vars; NODE *vars;
LINK_ELEMENT *last; LINK_ELEMENT *last;
@ -3911,7 +3916,7 @@ number_literal_p(NODE *n)
popped: This node will be popped popped: This node will be popped
*/ */
static int static int
iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int popped) iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node, int popped)
{ {
enum node_type type; enum node_type type;
LINK_ELEMENT *saved_last_element = 0; LINK_ELEMENT *saved_last_element = 0;
@ -6230,7 +6235,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int popped)
} }
/* check & remove redundant trace(line) */ /* check & remove redundant trace(line) */
if (saved_last_element && ret /* ret can be 0 when error */ && if (saved_last_element &&
ret->last == saved_last_element && ret->last == saved_last_element &&
((INSN *)saved_last_element)->insn_id == BIN(trace)) { ((INSN *)saved_last_element)->insn_id == BIN(trace)) {
POP_ELEMENT(ret); POP_ELEMENT(ret);
@ -6589,7 +6594,7 @@ iseq_build_callinfo_from_hash(rb_iseq_t *iseq, VALUE op)
} }
static int static int
iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor, iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *const anchor,
VALUE body, VALUE labels_wrapper) VALUE body, VALUE labels_wrapper)
{ {
/* TODO: body should be frozen */ /* TODO: body should be frozen */
@ -7011,7 +7016,7 @@ method_for_self(VALUE name, VALUE arg, rb_insn_func_t func,
} }
static VALUE static VALUE
for_self_aref(rb_iseq_t *iseq, LINK_ANCHOR *ret, VALUE a) for_self_aref(rb_iseq_t *iseq, LINK_ANCHOR *const ret, VALUE a)
{ {
const accessor_args *const args = (void *)a; const accessor_args *const args = (void *)a;
const int line = args->line; const int line = args->line;
@ -7026,7 +7031,7 @@ for_self_aref(rb_iseq_t *iseq, LINK_ANCHOR *ret, VALUE a)
} }
static VALUE static VALUE
for_self_aset(rb_iseq_t *iseq, LINK_ANCHOR *ret, VALUE a) for_self_aset(rb_iseq_t *iseq, LINK_ANCHOR *const ret, VALUE a)
{ {
const accessor_args *const args = (void *)a; const accessor_args *const args = (void *)a;
const int line = args->line; const int line = args->line;