ruby-changes:17675
From: ko1 <ko1@a...>
Date: Thu, 4 Nov 2010 20:18:54 +0900 (JST)
Subject: [ruby-changes:17675] Ruby:r29684 (trunk): * gc.c (after_gc_sweep, slot_sweep): finalizers should be invoked
ko1 2010-11-04 20:15:36 +0900 (Thu, 04 Nov 2010) New Revision: 29684 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29684 Log: * gc.c (after_gc_sweep, slot_sweep): finalizers should be invoked as soon as possible. Modified files: trunk/ChangeLog trunk/gc.c Index: ChangeLog =================================================================== --- ChangeLog (revision 29683) +++ ChangeLog (revision 29684) @@ -1,3 +1,8 @@ +Thu Nov 4 19:13:58 2010 Koichi Sasada <ko1@a...> + + * gc.c (after_gc_sweep, slot_sweep): finalizers should be invoked + as soon as possible. + Thu Nov 4 10:30:40 2010 URABE Shyouhei <shyouhei@r...> * configure.in (--with-valgrind): Now this option is default on. Index: gc.c =================================================================== --- gc.c (revision 29683) +++ gc.c (revision 29684) @@ -1006,7 +1006,6 @@ finalizer_table = st_init_numtable(); } - static void set_heaps_increment(rb_objspace_t *objspace) { @@ -1947,6 +1946,10 @@ objspace->heap.free_num += free_num; } objspace->heap.final_num += final_num; + + if (deferred_final_list) { + RUBY_VM_SET_FINALIZER_INTERRUPT(GET_THREAD()); + } } static int @@ -1995,13 +1998,7 @@ } malloc_increase = 0; - if (deferred_final_list) { - /* clear finalization list */ - RUBY_VM_SET_FINALIZER_INTERRUPT(GET_THREAD()); - } - else{ - free_unused_heaps(objspace); - } + free_unused_heaps(objspace); /* sweep unlinked method entries */ if (th->vm->unlinked_method_entry_list) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/