[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]