Changed the each_object callback so that a pointer is passed for the object, instead of the struct.

This commit is contained in:
Ryan Scott
2013-05-17 08:02:24 +10:00
parent da6b61db79
commit 40d63f7740
3 changed files with 6 additions and 14 deletions
+2 -10
View File
@@ -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 */
@@ -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++;
}
+1 -1
View File
@@ -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;