summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-05-01 18:10:44 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-05-23 23:50:42 +0900
commita1ea2a670c781848deec3ecb8657fc4aa3b8d34b (patch)
treec5db761879134a12ecc989ca5a906eb7a2ced8f4
parent24a24a41dd7e97bacb225e598b74580d351d825d (diff)
downloadmruby-a1ea2a670c781848deec3ecb8657fc4aa3b8d34b.tar.gz
mruby-a1ea2a670c781848deec3ecb8657fc4aa3b8d34b.zip
Use index in `each_object`.
-rw-r--r--src/gc.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/gc.c b/src/gc.c
index 469e5df6c..0fff408f3 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -1491,15 +1491,16 @@ gc_generational_mode_set(mrb_state *mrb, mrb_value self)
static void
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) {
- RVALUE *p, *pend;
+ RVALUE *p;
+ int i;
p = objects(page);
- pend = p + MRB_HEAP_PAGE_SIZE;
- for (;p < pend; p++) {
- if ((*callback)(mrb, &p->as.basic, data) == MRB_EACH_OBJ_BREAK)
+ for (i=0; i < MRB_HEAP_PAGE_SIZE; i++) {
+ if ((*callback)(mrb, &p[i].as.basic, data) == MRB_EACH_OBJ_BREAK)
return;
}
page = page->next;