From ac28b985bdc2f85eada8070d40f6de9f11dab7f8 Mon Sep 17 00:00:00 2001 From: ko1 Date: Wed, 11 Mar 2015 12:27:34 +0000 Subject: * 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 --- gc.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'gc.c') diff --git a/gc.c b/gc.c index a37923baeb..a7b2c6a0f0 100644 --- a/gc.c +++ b/gc.c @@ -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"); } } -- cgit v1.2.3