From 40d63f7740e4b020a2126ddb386760c6fd51c999 Mon Sep 17 00:00:00 2001 From: Ryan Scott Date: Fri, 17 May 2013 08:02:24 +1000 Subject: Changed the each_object callback so that a pointer is passed for the object, instead of the struct. --- include/mruby/gc.h | 12 ++---------- mrbgems/mruby-objectspace/src/mruby_objectspace.c | 6 +++--- src/gc.c | 2 +- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/include/mruby/gc.h b/include/mruby/gc.h index 552321be2..0c19275ba 100644 --- a/include/mruby/gc.h +++ b/include/mruby/gc.h @@ -1,5 +1,5 @@ /* -** gc.c - garbage collector for mruby +** gc.h - garbage collector for mruby ** ** See Copyright Notice in mruby.h */ @@ -7,18 +7,10 @@ #ifndef MRUBY_GC_H #define MRUBY_GC_H -#if defined(__cplusplus) -extern "C" { -#endif - #include "mruby.h" #include "mruby/value.h" -typedef int each_object_callback(mrb_state *mrb, struct RBasic obj, void *data); +typedef int each_object_callback(mrb_state *mrb, struct RBasic* obj, void *data); void mrb_objspace_each_objects(mrb_state *mrb, each_object_callback* callback, void *data); -#if defined(__cplusplus) -} /* extern "C" { */ -#endif - #endif /* MRUBY_GC_H */ diff --git a/mrbgems/mruby-objectspace/src/mruby_objectspace.c b/mrbgems/mruby-objectspace/src/mruby_objectspace.c index cf3cf631f..10934c83f 100644 --- a/mrbgems/mruby-objectspace/src/mruby_objectspace.c +++ b/mrbgems/mruby-objectspace/src/mruby_objectspace.c @@ -31,12 +31,12 @@ struct os_count_struct { size_t counts[MRB_TT_MAXDEFINE+1]; }; -void os_count_object_type(mrb_state *mrb, struct RBasic obj, void *data) +void os_count_object_type(mrb_state *mrb, struct RBasic* obj, void *data) { struct os_count_struct* obj_count; obj_count = (struct os_count_struct*)(data); - obj_count->counts[mrb_type(obj)]++; - if (is_dead(mrb, &obj)) + obj_count->counts[obj->tt]++; + if (is_dead(mrb, obj)) { obj_count->freed++; } diff --git a/src/gc.c b/src/gc.c index f824ee9d4..9dcc3f4b2 100644 --- a/src/gc.c +++ b/src/gc.c @@ -1153,7 +1153,7 @@ mrb_objspace_each_objects(mrb_state *mrb, each_object_callback* callback, void * p = page->objects; pend = p + MRB_HEAP_PAGE_SIZE; for (;p < pend; p++) { - callback(mrb, p->as.basic, data); + callback(mrb, &p->as.basic, data); } page = page->next; -- cgit v1.2.3