From c46f71399ae54967e7247ac4df0c26adeddbffd6 Mon Sep 17 00:00:00 2001 From: wanabe Date: Mon, 22 Mar 2010 11:44:01 +0000 Subject: * proc.c (rb_method_location): return attr's location if it is setup. [Feature #2084] * NEWS: follow above. * vm_method.c (rb_add_method): save attr's location. * gc.c (mark_method_entry): mark attr's location. * method.h (rb_method_definition_t): add member to save attr's location. * vm_eval.c (vm_call0): follow above. * vm_insnhelper.c (vm_call_method): ditto. * vm_method.c (rb_method_definition_eq): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- gc.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'gc.c') diff --git a/gc.c b/gc.c index 768337d84f..9761a06a39 100644 --- a/gc.c +++ b/gc.c @@ -1423,6 +1423,10 @@ mark_method_entry(rb_objspace_t *objspace, const rb_method_entry_t *me, int lev) case VM_METHOD_TYPE_BMETHOD: gc_mark(objspace, def->body.proc, lev); break; + case VM_METHOD_TYPE_ATTRSET: + case VM_METHOD_TYPE_IVAR: + gc_mark(objspace, def->body.attr.location, lev); + break; default: break; /* ignore */ } -- cgit v1.2.3