From 68ae87546e851d79528fffb648e35a65147eefac Mon Sep 17 00:00:00 2001 From: yui-knk Date: Wed, 27 Sep 2023 18:51:19 +0900 Subject: Merge NODE_DEF_TEMP and NODE_DEF_TEMP2 --- ast.c | 1 - ext/objspace/objspace.c | 1 - node_dump.c | 1 - parse.y | 34 ++++++++++------------------------ rubyparser.h | 10 +--------- 5 files changed, 11 insertions(+), 36 deletions(-) diff --git a/ast.c b/ast.c index a14cd5b2e3..b63b5c3173 100644 --- a/ast.c +++ b/ast.c @@ -681,7 +681,6 @@ node_children(rb_ast_t *ast, const NODE *node) return rb_ary_new_from_node_args(ast, 0); case NODE_ARGS_AUX: case NODE_DEF_TEMP: - case NODE_DEF_TEMP2: case NODE_RIPPER: case NODE_RIPPER_VALUES: case NODE_LAST: diff --git a/ext/objspace/objspace.c b/ext/objspace/objspace.c index 94ae2d5e2c..393bf1daaa 100644 --- a/ext/objspace/objspace.c +++ b/ext/objspace/objspace.c @@ -494,7 +494,6 @@ count_nodes(int argc, VALUE *argv, VALUE os) COUNT_NODE(NODE_FNDPTN); COUNT_NODE(NODE_HSHPTN); COUNT_NODE(NODE_DEF_TEMP); - COUNT_NODE(NODE_DEF_TEMP2); COUNT_NODE(NODE_RIPPER); COUNT_NODE(NODE_RIPPER_VALUES); COUNT_NODE(NODE_ERROR); diff --git a/node_dump.c b/node_dump.c index 81fed547ac..889fd521d8 100644 --- a/node_dump.c +++ b/node_dump.c @@ -1105,7 +1105,6 @@ dump_node(VALUE buf, VALUE indent, int comment, const NODE * node) case NODE_ARGS_AUX: case NODE_DEF_TEMP: - case NODE_DEF_TEMP2: case NODE_RIPPER: case NODE_RIPPER_VALUES: case NODE_LAST: diff --git a/parse.y b/parse.y index c2b5a707d1..73b3c33f7b 100644 --- a/parse.y +++ b/parse.y @@ -1091,14 +1091,12 @@ static rb_node_error_t *rb_node_error_new(struct parser_params *p, const YYLTYPE static rb_node_break_t *rb_node_break_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc); static rb_node_next_t *rb_node_next_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc); static rb_node_redo_t *rb_node_redo_new(struct parser_params *p, const YYLTYPE *loc); -static rb_node_def_temp_t *rb_node_def_temp_new(struct parser_params *p, ID nd_vid, ID nd_mid, rb_node_def_temp2_t *nd_next, const YYLTYPE *loc); -static rb_node_def_temp2_t *rb_node_def_temp2_new(struct parser_params *p, NODE *nd_head, long nd_nth, VALUE nd_cval); +static rb_node_def_temp_t *rb_node_def_temp_new(struct parser_params *p, ID nd_vid, ID nd_mid, NODE *nd_head, long nd_nth, VALUE nd_cval, const YYLTYPE *loc); #define NEW_BREAK(s,loc) (NODE *)rb_node_break_new(p,s,loc) #define NEW_NEXT(s,loc) (NODE *)rb_node_next_new(p,s,loc) #define NEW_REDO(loc) (NODE *)rb_node_redo_new(p,loc) -#define NEW_DEF_TEMP(v,m,n,loc) (NODE *)rb_node_def_temp_new(p,v,m,n,loc) -#define NEW_DEF_TEMP2(h,n,c) rb_node_def_temp2_new(p,h,n,c) +#define NEW_DEF_TEMP(v,m,h,n,c,loc) (NODE *)rb_node_def_temp_new(p,v,m,h,n,c,loc) /* Make a new internal node, which should not be appeared in the * result AST and does not have node_id and location. */ @@ -1579,14 +1577,14 @@ static void restore_defun(struct parser_params *p, NODE *name) { /* See: def_name action */ - struct RNode_DEF_TEMP2 *save = RNODE_DEF_TEMP(name)->nd_next; - YYSTYPE c = {.val = save->nd_cval}; - p->cur_arg = RNODE_DEF_TEMP(name)->nd_vid; + rb_node_def_temp_t *temp = RNODE_DEF_TEMP(name); + YYSTYPE c = {.val = temp->nd_cval}; + p->cur_arg = temp->nd_vid; p->ctxt.in_def = c.ctxt.in_def; p->ctxt.shareable_constant_value = c.ctxt.shareable_constant_value; p->ctxt.in_rescue = c.ctxt.in_rescue; - p->max_numparam = (int)save->nd_nth; - numparam_pop(p, save->nd_head); + p->max_numparam = (int)temp->nd_nth; + numparam_pop(p, temp->nd_head); clear_block_exit(p, true); } @@ -2549,15 +2547,12 @@ def_name : fname ID cur_arg = p->cur_arg; YYSTYPE c = {.ctxt = p->ctxt}; numparam_name(p, fname); - rb_node_def_temp2_t *save = - NEW_DEF_TEMP2(/*head*/numparam_push(p), - /*nth*/p->max_numparam, - /*cval*/c.val); + NODE *save = numparam_push(p); local_push(p, 0); p->cur_arg = 0; p->ctxt.in_def = 1; p->ctxt.in_rescue = before_rescue; - $$ = NEW_DEF_TEMP(/*vid*/cur_arg, /*mid*/fname, /*next*/save, &@$); + $$ = NEW_DEF_TEMP(cur_arg, fname, save, p->max_numparam, c.val, &@$); /*%%%*/ /*% $$ = NEW_RIPPER(fname, get_value($1), $$, &NULL_LOC); @@ -12182,20 +12177,11 @@ rb_node_redo_new(struct parser_params *p, const YYLTYPE *loc) } static rb_node_def_temp_t * -rb_node_def_temp_new(struct parser_params *p, ID nd_vid, ID nd_mid, rb_node_def_temp2_t *nd_next, const YYLTYPE *loc) +rb_node_def_temp_new(struct parser_params *p, ID nd_vid, ID nd_mid, NODE *nd_head, long nd_nth, VALUE nd_cval, const YYLTYPE *loc) { rb_node_def_temp_t *n = NODE_NEWNODE(NODE_DEF_TEMP, rb_node_def_temp_t, loc); n->nd_vid = nd_vid; n->nd_mid = nd_mid; - n->nd_next = nd_next; - - return n; -} - -static rb_node_def_temp2_t * -rb_node_def_temp2_new(struct parser_params *p, NODE *nd_head, long nd_nth, VALUE nd_cval) -{ - rb_node_def_temp2_t *n = NODE_NEW_INTERNAL(NODE_DEF_TEMP2, rb_node_def_temp2_t); n->nd_head = nd_head; n->nd_nth = nd_nth; n->nd_cval = nd_cval; diff --git a/rubyparser.h b/rubyparser.h index 6103f8505d..208bf3e827 100644 --- a/rubyparser.h +++ b/rubyparser.h @@ -132,7 +132,6 @@ enum node_type { NODE_FNDPTN, NODE_ERROR, NODE_DEF_TEMP, - NODE_DEF_TEMP2, NODE_RIPPER, NODE_RIPPER_VALUES, NODE_LAST @@ -836,16 +835,10 @@ typedef struct RNode_DEF_TEMP { ID nd_vid; ID nd_mid; - struct RNode_DEF_TEMP2 *nd_next; -} rb_node_def_temp_t; - -typedef struct RNode_DEF_TEMP2 { - NODE node; - struct RNode *nd_head; long nd_nth; VALUE nd_cval; -} rb_node_def_temp2_t; +} rb_node_def_temp_t; typedef struct RNode_ALIAS { NODE node; @@ -1117,7 +1110,6 @@ typedef struct RNode_ERROR { #define RNODE_DEFN(node) ((struct RNode_DEFN *)(node)) #define RNODE_DEFS(node) ((struct RNode_DEFS *)(node)) #define RNODE_DEF_TEMP(node) ((struct RNode_DEF_TEMP *)(node)) -#define RNODE_DEF_TEMP2(node) ((struct RNode_DEF_TEMP2 *)(node)) #define RNODE_ALIAS(node) ((struct RNode_ALIAS *)(node)) #define RNODE_VALIAS(node) ((struct RNode_VALIAS *)(node)) #define RNODE_UNDEF(node) ((struct RNode_UNDEF *)(node)) -- cgit v1.2.3