From 53bdcbed86942f2ac6b1a3affcc187602d25cead Mon Sep 17 00:00:00 2001 From: ko1 Date: Tue, 16 Jul 2013 06:10:56 +0000 Subject: revert last commit because it fails test-all. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41996 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ---- gc.c | 14 ++++++-------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 64725e8e21..a750ba36ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,3 @@ -Tue Jul 16 14:59:09 2013 Koichi Sasada - - * gc.c (after_gc_sweep): refactoring code. - Tue Jul 16 13:32:06 2013 Nobuyoshi Nakada * encoding.c (enc_set_index): since r41967, old terminator is dealt diff --git a/gc.c b/gc.c index e5ffaccfec..108f1f4d28 100644 --- a/gc.c +++ b/gc.c @@ -2384,20 +2384,18 @@ after_gc_sweep(rb_objspace_t *objspace) static int lazy_sweep(rb_objspace_t *objspace) { - struct heaps_slot *slot; + struct heaps_slot *next; int result = FALSE; gc_prof_sweep_timer_start(objspace); heaps_increment(objspace); - slot = objspace->heap.sweep_slots; + while (is_lazy_sweeping(objspace)) { + next = objspace->heap.sweep_slots->next; + slot_sweep(objspace, objspace->heap.sweep_slots); + objspace->heap.sweep_slots = next; - while (slot) { - slot_sweep(objspace, slot); - - if ((objspace->heap.sweep_slots = slot = slot->next) == NULL) { - after_gc_sweep(objspace); - } + if (!next) after_gc_sweep(objspace); if (has_free_object) { result = TRUE; -- cgit v1.2.3