summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorwanabe <wanabe@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-22 11:44:01 +0000
committerwanabe <wanabe@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-22 11:44:01 +0000
commitc46f71399ae54967e7247ac4df0c26adeddbffd6 (patch)
tree829ebc2a778a5306f6c403029fe5b04713fd480c /gc.c
parent5d8f69503299ef719c5523546cf2745de136cea9 (diff)
* 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
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c4
1 files changed, 4 insertions, 0 deletions
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 */
}