diff options
| author | Ryan Scott <[email protected]> | 2013-05-17 07:41:13 +1000 |
|---|---|---|
| committer | Ryan Scott <[email protected]> | 2013-05-17 07:41:13 +1000 |
| commit | f62cc5b1eebb29d244977c6030c04d9cb8ebefba (patch) | |
| tree | 188d07664a7a32ae8e229bfb75028d9a5afcc598 /src/gc.c | |
| parent | 222918deae84ae8dda26aa769bf3cc6b68e3aeec (diff) | |
| download | mruby-f62cc5b1eebb29d244977c6030c04d9cb8ebefba.tar.gz mruby-f62cc5b1eebb29d244977c6030c04d9cb8ebefba.zip | |
Changed the object_count so that it only iterates over the RBasic object, not the full RVALUE known by the GC
Diffstat (limited to 'src/gc.c')
| -rw-r--r-- | src/gc.c | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -73,6 +73,26 @@ */ +struct free_obj { + MRB_OBJECT_HEADER; + struct RBasic *next; +}; + +typedef struct { + union { + struct free_obj free; + struct RBasic basic; + struct RObject object; + struct RClass klass; + struct RString string; + struct RArray array; + struct RHash hash; + struct RRange range; + struct RData data; + struct RProc proc; + } as; +} RVALUE; + #ifdef GC_PROFILE #include <stdio.h> #include <sys/time.h> @@ -1133,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(p, data); + callback(mrb, p->as.basic, data); } page = page->next; |
