gc.c: inline unlink_heap_page which was called only once

This commit is contained in:
Yukihiro "Matz" Matsumoto
2023-09-09 23:54:51 +09:00
parent 0f69e93664
commit 9f840e111a
+8 -12
View File
@@ -297,17 +297,6 @@ mrb_object_dead_p(mrb_state *mrb, struct RBasic *object)
return is_dead(gc, object);
}
static void
unlink_heap_page(mrb_gc *gc, mrb_heap_page *page)
{
if (page->prev)
page->prev->next = page->next;
if (page->next)
page->next->prev = page->prev;
if (gc->heaps == page)
gc->heaps = page->next;
}
static void
add_heap(mrb_state *mrb, mrb_gc *gc)
{
@@ -1115,7 +1104,14 @@ incremental_sweep_phase(mrb_state *mrb, mrb_gc *gc, size_t limit)
if (dead_slot) {
mrb_heap_page *next = page->next;
unlink_heap_page(gc, page);
/* unlink_heap_page */
if (page->prev)
page->prev->next = page->next;
if (page->next)
page->next->prev = page->prev;
if (gc->heaps == page)
gc->heaps = page->next;
mrb_free(mrb, page);
page = next;
}