Skip to content

Commit 54f0e63

Browse files
committed
Remove NODE_DASGN_CURR [Feature #18406]
This `NODE` type was used in pre-YARV implementation, to improve the performance of assignment to dynamic local variable defined at the innermost scope. It has no longer any actual difference with `NODE_DASGN`, except for the node dump.
1 parent d3c8f7b commit 54f0e63

File tree

6 files changed

+8
-29
lines changed

6 files changed

+8
-29
lines changed

ast.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,6 @@ node_children(rb_ast_t *ast, const NODE *node)
417417
}
418418
case NODE_LASGN:
419419
case NODE_DASGN:
420-
case NODE_DASGN_CURR:
421420
case NODE_IASGN:
422421
case NODE_CVASGN:
423422
case NODE_GASGN:

compile.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4928,7 +4928,6 @@ compile_massign_opt(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
49284928
MEMORY(ln->nd_vid);
49294929
break;
49304930
case NODE_DASGN:
4931-
case NODE_DASGN_CURR:
49324931
case NODE_IASGN:
49334932
case NODE_CVASGN:
49344933
MEMORY(ln->nd_vid);
@@ -5322,7 +5321,6 @@ defined_expr0(rb_iseq_t *iseq, LINK_ANCHOR *const ret,
53225321
case NODE_MASGN:
53235322
case NODE_LASGN:
53245323
case NODE_DASGN:
5325-
case NODE_DASGN_CURR:
53265324
case NODE_GASGN:
53275325
case NODE_IASGN:
53285326
case NODE_CDECL:
@@ -6592,8 +6590,7 @@ iseq_compile_pattern_each(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *c
65926590
ADD_INSNL(ret, line_node, jump, matched);
65936591
break;
65946592
}
6595-
case NODE_DASGN:
6596-
case NODE_DASGN_CURR: {
6593+
case NODE_DASGN: {
65976594
int idx, lv, ls;
65986595
ID id = node->nd_vid;
65996596

@@ -6609,7 +6606,7 @@ iseq_compile_pattern_each(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *c
66096606
}
66106607

66116608
if (idx < 0) {
6612-
COMPILE_ERROR(ERROR_ARGS "NODE_DASGN(_CURR): unknown id (%"PRIsVALUE")",
6609+
COMPILE_ERROR(ERROR_ARGS "NODE_DASGN: unknown id (%"PRIsVALUE")",
66136610
rb_id2str(id));
66146611
return COMPILE_NG;
66156612
}
@@ -9199,8 +9196,7 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const no
91999196
ADD_SETLOCAL(ret, node, idx, get_lvar_level(iseq));
92009197
break;
92019198
}
9202-
case NODE_DASGN:
9203-
case NODE_DASGN_CURR:{
9199+
case NODE_DASGN: {
92049200
int idx, lv, ls;
92059201
ID id = node->nd_vid;
92069202
CHECK(COMPILE(ret, "dvalue", node->nd_value));
@@ -9213,7 +9209,7 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const no
92139209
idx = get_dyna_var_idx(iseq, id, &lv, &ls);
92149210

92159211
if (idx < 0) {
9216-
COMPILE_ERROR(ERROR_ARGS "NODE_DASGN(_CURR): unknown id (%"PRIsVALUE")",
9212+
COMPILE_ERROR(ERROR_ARGS "NODE_DASGN: unknown id (%"PRIsVALUE")",
92179213
rb_id2str(id));
92189214
goto ng;
92199215
}

ext/objspace/objspace.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,6 @@ count_nodes(int argc, VALUE *argv, VALUE os)
423423
COUNT_NODE(NODE_MASGN);
424424
COUNT_NODE(NODE_LASGN);
425425
COUNT_NODE(NODE_DASGN);
426-
COUNT_NODE(NODE_DASGN_CURR);
427426
COUNT_NODE(NODE_GASGN);
428427
COUNT_NODE(NODE_IASGN);
429428
COUNT_NODE(NODE_CDECL);

node.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -407,16 +407,9 @@ dump_node(VALUE buf, VALUE indent, int comment, const NODE * node)
407407
}
408408
return;
409409
case NODE_DASGN:
410-
ANN("dynamic variable assignment (out of current scope)");
410+
ANN("dynamic variable assignment");
411411
ANN("format: [nd_vid](dvar) = [nd_value]");
412412
ANN("example: x = nil; 1.times { x = foo }");
413-
F_ID(nd_vid, "local variable");
414-
LAST_NODE;
415-
F_NODE(nd_value, "rvalue");
416-
return;
417-
case NODE_DASGN_CURR:
418-
ANN("dynamic variable assignment (in current scope)");
419-
ANN("format: [nd_vid](current dvar) = [nd_value]");
420413
ANN("example: 1.times { x = foo }");
421414
F_ID(nd_vid, "local variable");
422415
if (NODE_REQUIRED_KEYWORD_P(node)) {

node.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ enum node_type {
4848
NODE_MASGN,
4949
NODE_LASGN,
5050
NODE_DASGN,
51-
NODE_DASGN_CURR,
5251
NODE_GASGN,
5352
NODE_IASGN,
5453
NODE_CDECL,
@@ -327,7 +326,6 @@ typedef struct RNode {
327326
#define NEW_GASGN(v,val,loc) NEW_NODE(NODE_GASGN,v,val,v,loc)
328327
#define NEW_LASGN(v,val,loc) NEW_NODE(NODE_LASGN,v,val,0,loc)
329328
#define NEW_DASGN(v,val,loc) NEW_NODE(NODE_DASGN,v,val,0,loc)
330-
#define NEW_DASGN_CURR(v,val,loc) NEW_NODE(NODE_DASGN_CURR,v,val,0,loc)
331329
#define NEW_IASGN(v,val,loc) NEW_NODE(NODE_IASGN,v,val,0,loc)
332330
#define NEW_CDECL(v,val,path,loc) NEW_NODE(NODE_CDECL,v,val,path,loc)
333331
#define NEW_CVASGN(v,val,loc) NEW_NODE(NODE_CVASGN,v,val,0,loc)

parse.y

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3177,8 +3177,7 @@ primary : literal
31773177

31783178
switch (nd_type($2)) {
31793179
case NODE_LASGN:
3180-
case NODE_DASGN:
3181-
case NODE_DASGN_CURR: /* e.each {|internal_var| a = internal_var; ... } */
3180+
case NODE_DASGN: /* e.each {|internal_var| a = internal_var; ... } */
31823181
$2->nd_value = internal_var;
31833182
id = 0;
31843183
m->nd_plen = 1;
@@ -10879,11 +10878,11 @@ assignable0(struct parser_params *p, ID id, const char **err)
1087910878
NUMPARAM_ID_TO_IDX(id));
1088010879
return -1;
1088110880
}
10882-
if (dvar_curr(p, id)) return NODE_DASGN_CURR;
10881+
if (dvar_curr(p, id)) return NODE_DASGN;
1088310882
if (dvar_defined(p, id)) return NODE_DASGN;
1088410883
if (local_id(p, id)) return NODE_LASGN;
1088510884
dyna_var(p, id);
10886-
return NODE_DASGN_CURR;
10885+
return NODE_DASGN;
1088710886
}
1088810887
else {
1088910888
if (!local_id(p, id)) local_var(p, id);
@@ -10910,7 +10909,6 @@ assignable(struct parser_params *p, ID id, NODE *val, const YYLTYPE *loc)
1091010909
const char *err = 0;
1091110910
int node_type = assignable0(p, id, &err);
1091210911
switch (node_type) {
10913-
case NODE_DASGN_CURR: return NEW_DASGN_CURR(id, val, loc);
1091410912
case NODE_DASGN: return NEW_DASGN(id, val, loc);
1091510913
case NODE_LASGN: return NEW_LASGN(id, val, loc);
1091610914
case NODE_GASGN: return NEW_GASGN(id, val, loc);
@@ -11122,7 +11120,6 @@ mark_lvar_used(struct parser_params *p, NODE *rhs)
1112211120
}
1112311121
break;
1112411122
case NODE_DASGN:
11125-
case NODE_DASGN_CURR:
1112611123
if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
1112711124
if (vidp) *vidp |= LVAR_USED;
1112811125
}
@@ -11397,7 +11394,6 @@ node_assign(struct parser_params *p, NODE *lhs, NODE *rhs, struct lex_context ct
1139711394
case NODE_IASGN:
1139811395
case NODE_LASGN:
1139911396
case NODE_DASGN:
11400-
case NODE_DASGN_CURR:
1140111397
case NODE_MASGN:
1140211398
case NODE_CVASGN:
1140311399
lhs->nd_value = rhs;
@@ -11477,7 +11473,6 @@ value_expr_check(struct parser_params *p, NODE *node)
1147711473

1147811474
case NODE_LASGN:
1147911475
case NODE_DASGN:
11480-
case NODE_DASGN_CURR:
1148111476
case NODE_MASGN:
1148211477
mark_lvar_used(p, node);
1148311478
return NULL;
@@ -11713,7 +11708,6 @@ assign_in_cond(struct parser_params *p, NODE *node)
1171311708
case NODE_MASGN:
1171411709
case NODE_LASGN:
1171511710
case NODE_DASGN:
11716-
case NODE_DASGN_CURR:
1171711711
case NODE_GASGN:
1171811712
case NODE_IASGN:
1171911713
break;

0 commit comments

Comments
 (0)