From fcdbdff631a1a6bcc2229d448ed7c76041fe3258 Mon Sep 17 00:00:00 2001 From: Kazuki Tsujimoto Date: Sun, 2 Aug 2020 01:03:43 +0900 Subject: rb_{ary,fnd}_pattern_info: Remove imemo member to reduce memory usage This is a partial revert commit of 8f096226e1b76f95f4d853d3dea2bc75eeeb5244. NODE layout: Before: | ARYPTN | FNDPTN | HSHPTN ---+--------+--------+----------- u1 | pconst | pconst | pconst u2 | unused | unused | pkwargs u3 | apinfo | fpinfo | pkwrestarg After: | ARYPTN | FNDPTN | HSHPTN ---+--------+--------+----------- u1 | imemo | imemo | pkwargs u2 | pconst | pconst | pconst u3 | apinfo | fpinfo | pkwrestarg --- node.c | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) (limited to 'node.c') diff --git a/node.c b/node.c index 01ec4bee04..7c291a80ad 100644 --- a/node.c +++ b/node.c @@ -1294,18 +1294,6 @@ static void mark_ast_value(void *ctx, NODE * node) { switch (nd_type(node)) { - case NODE_ARYPTN: - { - struct rb_ary_pattern_info *apinfo = node->nd_apinfo; - rb_gc_mark_movable(apinfo->imemo); - break; - } - case NODE_FNDPTN: - { - struct rb_fnd_pattern_info *fpinfo = node->nd_fpinfo; - rb_gc_mark_movable(fpinfo->imemo); - break; - } case NODE_ARGS: { struct rb_args_info *args = node->nd_ainfo; @@ -1320,6 +1308,8 @@ mark_ast_value(void *ctx, NODE * node) case NODE_DXSTR: case NODE_DREGX: case NODE_DSYM: + case NODE_ARYPTN: + case NODE_FNDPTN: rb_gc_mark_movable(node->nd_lit); break; default: @@ -1331,18 +1321,6 @@ static void update_ast_value(void *ctx, NODE * node) { switch (nd_type(node)) { - case NODE_ARYPTN: - { - struct rb_ary_pattern_info *apinfo = node->nd_apinfo; - apinfo->imemo = rb_gc_location(apinfo->imemo); - break; - } - case NODE_FNDPTN: - { - struct rb_fnd_pattern_info *fpinfo = node->nd_fpinfo; - fpinfo->imemo = rb_gc_location(fpinfo->imemo); - break; - } case NODE_ARGS: { struct rb_args_info *args = node->nd_ainfo; @@ -1357,6 +1335,8 @@ update_ast_value(void *ctx, NODE * node) case NODE_DXSTR: case NODE_DREGX: case NODE_DSYM: + case NODE_ARYPTN: + case NODE_FNDPTN: node->nd_lit = rb_gc_location(node->nd_lit); break; default: -- cgit v1.2.3