summaryrefslogtreecommitdiffstats
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
authornari <nari@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-05-13 14:08:26 +0000
committernari <nari@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-05-13 14:08:26 +0000
commit729e0a25d383e35dcf2a41ea9c46555f3b539457 (patch)
tree24bcde781130fad832673a8fbddf2e92c2324073 /vm_insnhelper.c
parent4a6c457e7e1e2a0c3bd10edd457eff20deac0a71 (diff)
downloadruby-729e0a25d383e35dcf2a41ea9c46555f3b539457.tar.gz
ruby-729e0a25d383e35dcf2a41ea9c46555f3b539457.tar.xz
ruby-729e0a25d383e35dcf2a41ea9c46555f3b539457.zip
* gc.c: add longlife garbage collection. [ruby-dev:38423]
(NORMAL_HEAPS_USED): new macro. (LONGLIFE_ALLOCATE_HEAPS_MIN): ditto. (add_longlife_heaps_slot): new function. (rb_newobj_from_longlife_heap): ditto. (rb_newobj_longlife): ditto. (rb_node_newnode_longlife): ditto. (rb_gc_write_barrier): ditto. (remembered_set_recycle): ditto. (rb_gc_mark_remembered_set): ditto. (clear_mark_longlife_heaps): ditto. (gc_sweep_for_longlife): ditto. (assign_heap_slot): new argumnent to longlife heaps slot. (add_freelist): ditto. (gc_sweep): avoid lonlife heap slot. set longlife_collection flag at add heap. (rb_gc_force_recycle): avoid mark object and remembered_set object. (garbage_collect): add longlife collection. (rb_gc_start): invoke longlife collection. (gc_profile_record_get): for longlife collction profile. (gc_profile_result): ditto. * include/ruby/intern.h (rb_gc_write_barrier): declared. * include/ruby/ruby.h (FL_REMEMBERED_SET): renamed from FL_RESERVED. * debug.c (FL_REMEMBERED_SET): ditto. * insns.def (setinlinecache): insert write barrier. * vm_insnhelper.c (vm_method_search): ditto. * set_relation (set_relation): use longlife object. * vm.c (vm_define_method): ditto. * vm_core.h (NEW_INLINE_CACHE_ENTRY): ditto. * vm_method.c (rb_add_method): ditto. * class.c (rb_add_method): ditto. * node.h (NEW_NODE_LONGLIFE): new macro. (rb_node_newnode_longlife): declared. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 5293af316..13bbcf799 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -1170,8 +1170,8 @@ vm_method_search(VALUE id, VALUE klass, IC ic)
}
else {
mn = rb_method_node(klass, id);
- ic->ic_class = klass;
- ic->ic_method = mn;
+ ic->ic_class = rb_gc_write_barrier(klass);
+ ic->ic_method = (NODE *)rb_gc_write_barrier((VALUE)mn);
ic->ic_vmstat = GET_VM_STATE_VERSION();
}
}