summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRyan Scott <[email protected]>2013-05-17 08:02:24 +1000
committerRyan Scott <[email protected]>2013-05-17 08:02:24 +1000
commit40d63f7740e4b020a2126ddb386760c6fd51c999 (patch)
treec55420fb15a817eb84c3c21940e550f3403da287
parentda6b61db796a27c7e2784247e94293d86ac7563c (diff)
downloadmruby-40d63f7740e4b020a2126ddb386760c6fd51c999.tar.gz
mruby-40d63f7740e4b020a2126ddb386760c6fd51c999.zip
Changed the each_object callback so that a pointer is passed for the object, instead of the struct.
-rw-r--r--include/mruby/gc.h12
-rw-r--r--mrbgems/mruby-objectspace/src/mruby_objectspace.c6
-rw-r--r--src/gc.c2
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;