From cedfed5e8d6371c66f9f664e0c49f5d051dad033 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 24 Mar 2013 10:43:37 +0000 Subject: * vm_method.c (rb_sweep_method_entry): simplify code to unlink. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_method.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'vm_method.c') diff --git a/vm_method.c b/vm_method.c index 6d0865f9d8..b4c45180d6 100644 --- a/vm_method.c +++ b/vm_method.c @@ -122,26 +122,20 @@ void rb_sweep_method_entry(void *pvm) { rb_vm_t *vm = pvm; - struct unlinked_method_entry_list_entry *ume = vm->unlinked_method_entry_list, *prev_ume = 0, *curr_ume; + struct unlinked_method_entry_list_entry **prev_ume = &vm->unlinked_method_entry_list, *ume = *prev_ume, *curr_ume; while (ume) { if (ume->me->mark) { ume->me->mark = 0; - prev_ume = ume; - ume = ume->next; + prev_ume = &ume->next; + ume = *prev_ume; } else { rb_free_method_entry(ume->me); - if (prev_ume == 0) { - vm->unlinked_method_entry_list = ume->next; - } - else { - prev_ume->next = ume->next; - } - curr_ume = ume; ume = ume->next; + *prev_ume = ume; xfree(curr_ume); } } -- cgit v1.2.3