diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-05-01 18:10:44 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-05-23 23:50:42 +0900 |
| commit | a1ea2a670c781848deec3ecb8657fc4aa3b8d34b (patch) | |
| tree | c5db761879134a12ecc989ca5a906eb7a2ced8f4 | |
| parent | 24a24a41dd7e97bacb225e598b74580d351d825d (diff) | |
| download | mruby-a1ea2a670c781848deec3ecb8657fc4aa3b8d34b.tar.gz mruby-a1ea2a670c781848deec3ecb8657fc4aa3b8d34b.zip | |
Use index in `each_object`.
| -rw-r--r-- | src/gc.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -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; |
