Use index in `each_object`.

parent 24a24a41
...@@ -1491,15 +1491,16 @@ gc_generational_mode_set(mrb_state *mrb, mrb_value self) ...@@ -1491,15 +1491,16 @@ gc_generational_mode_set(mrb_state *mrb, mrb_value self)
static void static void
gc_each_objects(mrb_state *mrb, mrb_gc *gc, mrb_each_object_callback *callback, void *data) gc_each_objects(mrb_state *mrb, mrb_gc *gc, mrb_each_object_callback *callback, void *data)
{ {
mrb_heap_page* page = gc->heaps; mrb_heap_page* page;
page = gc->heaps;
while (page != NULL) { while (page != NULL) {
RVALUE *p, *pend; RVALUE *p;
int i;
p = objects(page); p = objects(page);
pend = p + MRB_HEAP_PAGE_SIZE; for (i=0; i < MRB_HEAP_PAGE_SIZE; i++) {
for (;p < pend; p++) { if ((*callback)(mrb, &p[i].as.basic, data) == MRB_EACH_OBJ_BREAK)
if ((*callback)(mrb, &p->as.basic, data) == MRB_EACH_OBJ_BREAK)
return; return;
} }
page = page->next; page = page->next;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment