diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-03-11 12:27:34 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-03-11 12:27:34 +0000 |
commit | ac28b985bdc2f85eada8070d40f6de9f11dab7f8 (patch) | |
tree | 7032a0f9ca75346ea1316ff2d8254c2606de93da /gc.c | |
parent | 734146a459564e8b6aa221d8a5d4d55c8610d557 (diff) | |
download | ruby-ac28b985bdc2f85eada8070d40f6de9f11dab7f8.tar.gz |
* vm_insnhelper.c: use T_IMEMO to create SVAR.
* internal.h, vm_insnhelper.h: move definition `struct SVAR'
from vm_insnhelper.h to internal.h. And rename it to strcut vm_svar.
new imemo_type imemo_svar is added.
* gc.c (gc_mark_children): mark imemo_svar.
* node.c (rb_gc_mark_node): remove useless marking.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -382,6 +382,7 @@ typedef struct RVALUE { struct RComplex complex; union { rb_cref_t cref; + struct vm_svar svar; } imemo; struct { struct RBasic basic; @@ -4156,8 +4157,14 @@ gc_mark_children(rb_objspace_t *objspace, VALUE obj) gc_mark(objspace, (VALUE)RANY(obj)->as.imemo.cref.next); gc_mark(objspace, RANY(obj)->as.imemo.cref.refinements); return; + case imemo_svar: + gc_mark(objspace, (VALUE)RANY(obj)->as.imemo.svar.cref); + gc_mark(objspace, RANY(obj)->as.imemo.svar.lastline); + gc_mark(objspace, RANY(obj)->as.imemo.svar.backref); + gc_mark(objspace, RANY(obj)->as.imemo.svar.others); + return; default: - rb_bug("unreachable"); + rb_bug("T_IMEMO: unreachable"); } } |