ruby-changes:16693
From: nari <ko1@a...>
Date: Tue, 20 Jul 2010 15:14:55 +0900 (JST)
Subject: [ruby-changes:16693] Ruby:r28689 (trunk): * gc.c: don't call after_gc_sweep() after when garbage_collect()
nari 2010-07-20 15:14:40 +0900 (Tue, 20 Jul 2010) New Revision: 28689 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28689 Log: * gc.c: don't call after_gc_sweep() after when garbage_collect() was called, because rb_sweep_method_entry() free live unlinked method entries. [ruby-core:31169] Modified files: trunk/ChangeLog trunk/gc.c Index: ChangeLog =================================================================== --- ChangeLog (revision 28688) +++ ChangeLog (revision 28689) @@ -1,3 +1,9 @@ +Tue Jul 20 14:21:38 2010 Narihiro Nakamura <authorNari@g...> + + * gc.c: don't call after_gc_sweep() after when garbage_collect() + was called, because rb_sweep_method_entry() free live unlinked + method entries. [ruby-core:31169] + Tue Jul 20 12:42:06 2010 URABE Shyouhei <shyouhei@r...> * ext/socket/raddrinfo.c (rb_getaddrinfo): according to my Index: gc.c =================================================================== --- gc.c (revision 28688) +++ gc.c (revision 28689) @@ -2055,16 +2055,17 @@ GC_PROF_TIMER_START; GC_PROF_SWEEP_TIMER_START; - res = lazy_sweep(objspace); - if (res) { - GC_PROF_SWEEP_TIMER_STOP; - GC_PROF_SET_MALLOC_INFO; - GC_PROF_TIMER_STOP(Qfalse); - return res; + if (objspace->heap.sweep_slots) { + res = lazy_sweep(objspace); + if (res) { + GC_PROF_SWEEP_TIMER_STOP; + GC_PROF_SET_MALLOC_INFO; + GC_PROF_TIMER_STOP(Qfalse); + return res; + } + after_gc_sweep(objspace); } - after_gc_sweep(objspace); - gc_marks(objspace); before_gc_sweep(objspace); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/