[前][次][番号順一覧][スレッド一覧][生データ]

yarv-diff:215

From: ko1 atdot.net
Date: 9 Feb 2006 16:12:42 -0000
Subject: [yarv-diff:215] r373 - trunk

Author: matz
Date: 2006-02-10 01:12:41 +0900 (Fri, 10 Feb 2006)
New Revision: 373

Modified:
   trunk/ChangeLog
   trunk/gc.c
Log:
* gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while
  invoking finalizers.

  * gc.c (rb_gc_finalize_deferred): ditto.


Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2006-02-08 14:18:05 UTC (rev 372)
+++ trunk/ChangeLog	2006-02-09 16:12:41 UTC (rev 373)
@@ -4,6 +4,14 @@
 #  from Mon, 03 May 2004 01:24:19 +0900
 #
 
+2006-02-10(Fri) 01:04:58 +0900  Yukihiro Matsumoto  <matz ruby-lang.org>
+
+	* gc.c (rb_gc_call_finalizer_at_exit): turn on during_gc while
+	  invoking finalizers.
+
+	* gc.c (rb_gc_finalize_deferred): ditto.
+
+
 2006-02-08(Wed) 23:17:44 +0900  Minero Aoki  <aamine loveruby.net>
 
 	* test/ruby/test_proc.rb: method names were wrongly duplicated.

Modified: trunk/gc.c
===================================================================
--- trunk/gc.c	2006-02-08 14:18:05 UTC (rev 372)
+++ trunk/gc.c	2006-02-09 16:12:41 UTC (rev 373)
@@ -1782,11 +1782,13 @@
 {
     RVALUE *p = deferred_final_list;
 
+    during_gc++;
     deferred_final_list = 0;
     if (p) {
 	finalize_list(p);
     }
     free_unused_heaps();
+    during_gc = 0;
 }
 
 void
@@ -1795,6 +1797,8 @@
     RVALUE *p, *pend;
     int i;
 
+    /* finalizers are part of garbage collection */
+    during_gc++;
     /* run finalizers */
     if (need_call_final) {
 	p = deferred_final_list;
@@ -1835,6 +1839,7 @@
 	    p++;
 	}
     }
+    during_gc = 0;
 }
 
 /*


-- 
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]