1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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
This commit is contained in:
nobu 2013-03-24 10:43:37 +00:00
parent 014236612a
commit cedfed5e8d

View file

@ -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);
}
}