diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-03-24 10:43:37 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-03-24 10:43:37 +0000 |
commit | cedfed5e8d6371c66f9f664e0c49f5d051dad033 (patch) | |
tree | 23c7f704309ef30f52bf2a4ecc954d254e161f89 /vm_method.c | |
parent | 014236612a0be2f07ac6e645bd5a32ddbe4c8b0f (diff) | |
download | ruby-cedfed5e8d6371c66f9f664e0c49f5d051dad033.tar.gz |
* 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
Diffstat (limited to 'vm_method.c')
-rw-r--r-- | vm_method.c | 14 |
1 files changed, 4 insertions, 10 deletions
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); } } |