зеркало из https://github.com/github/ruby.git
* gc.c (lazy_sweep): refactoring.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41998 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
15dd1f9d8b
Коммит
e8ee0a24dc
|
@ -1,3 +1,7 @@
|
|||
Tue Jul 16 16:30:58 2013 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* gc.c (lazy_sweep): refactoring.
|
||||
|
||||
Tue Jul 16 13:32:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* encoding.c (enc_set_index): since r41967, old terminator is dealt
|
||||
|
|
15
gc.c
15
gc.c
|
@ -2384,16 +2384,19 @@ after_gc_sweep(rb_objspace_t *objspace)
|
|||
static int
|
||||
lazy_sweep(rb_objspace_t *objspace)
|
||||
{
|
||||
struct heaps_slot *next;
|
||||
struct heaps_slot *slot, *next;
|
||||
int result = FALSE;
|
||||
|
||||
gc_prof_sweep_timer_start(objspace);
|
||||
|
||||
heaps_increment(objspace);
|
||||
while (is_lazy_sweeping(objspace)) {
|
||||
next = objspace->heap.sweep_slots->next;
|
||||
slot_sweep(objspace, objspace->heap.sweep_slots);
|
||||
objspace->heap.sweep_slots = next;
|
||||
|
||||
slot = objspace->heap.sweep_slots;
|
||||
|
||||
while (slot) {
|
||||
objspace->heap.sweep_slots = next = slot->next;
|
||||
|
||||
slot_sweep(objspace, slot);
|
||||
|
||||
if (!next) after_gc_sweep(objspace);
|
||||
|
||||
|
@ -2401,6 +2404,8 @@ lazy_sweep(rb_objspace_t *objspace)
|
|||
result = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
slot = next;
|
||||
}
|
||||
|
||||
gc_prof_sweep_timer_stop(objspace);
|
||||
|
|
Загрузка…
Ссылка в новой задаче