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

ruby-changes:12027

From: matz <ko1@a...>
Date: Mon, 15 Jun 2009 18:06:31 +0900 (JST)
Subject: [ruby-changes:12027] Ruby:r23693 (trunk): * gc.c (os_obj_of): invoke garbage collection before iteration, to

matz	2009-06-15 18:06:16 +0900 (Mon, 15 Jun 2009)

  New Revision: 23693

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23693

  Log:
    * gc.c (os_obj_of): invoke garbage collection before iteration, to
      avoid accessing half recycled object references.  [ruby-dev:38613]

  Modified files:
    trunk/ChangeLog
    trunk/gc.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 23692)
+++ ChangeLog	(revision 23693)
@@ -1,3 +1,8 @@
+Mon Jun 15 17:48:42 2009  Yukihiro Matsumoto  <matz@r...>
+
+	* gc.c (os_obj_of): invoke garbage collection before iteration, to
+	  avoid accessing half recycled object references.  [ruby-dev:38613]
+
 Mon Jun 15 11:04:30 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* .gdbinit (rp, iseq): load dummy_gdb_enums on demand.
Index: gc.c
===================================================================
--- gc.c	(revision 23692)
+++ gc.c	(revision 23693)
@@ -85,6 +85,7 @@
 int ruby_gc_debug_indent = 0;
 
 #undef GC_DEBUG
+#define GC_DEBUG
 
 /* for GC profile */
 #define GC_PROFILE_MORE_DETAIL 0
@@ -272,7 +273,7 @@
 	struct RComplex complex;
     } as;
 #ifdef GC_DEBUG
-    char *file;
+    const char *file;
     int   line;
 #endif
 } RVALUE;
@@ -2392,6 +2393,7 @@
     RVALUE *p, *pend;
     volatile VALUE v;
 
+    rb_garbage_collect();
     i = 0;
     while (i < heaps_used) {
         while (0 < i && (uintptr_t)membase < (uintptr_t)heaps[i-1].membase)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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