diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-05-18 11:19:25 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-05-18 11:19:25 +0900 |
| commit | 834ea241e06d084e666bab1644a61f00492db787 (patch) | |
| tree | 8f4875cf9c8f78336031c964136fe029f9e93e69 /src | |
| parent | 36216ac6f7373c879ca103a30b55cab21a339415 (diff) | |
| parent | 8161f0f6d7f89ad723163943d2d3abc38cd02df5 (diff) | |
| download | mruby-834ea241e06d084e666bab1644a61f00492db787.tar.gz mruby-834ea241e06d084e666bab1644a61f00492db787.zip | |
Merge branch 'master' of https://github.com/Archytaus/mruby into Archytaus-master
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc.c | 20 | ||||
| -rw-r--r-- | src/hash.c | 4 |
2 files changed, 22 insertions, 2 deletions
@@ -20,6 +20,7 @@ #include "mruby/range.h" #include "mruby/string.h" #include "mruby/variable.h" +#include "mruby/gc.h" /* = Tri-color Incremental Garbage Collection @@ -1141,6 +1142,24 @@ gc_generational_mode_set(mrb_state *mrb, mrb_value self) return mrb_bool_value(enable); } +void +mrb_objspace_each_objects(mrb_state *mrb, each_object_callback* callback, void *data) +{ + struct heap_page* page = mrb->heaps; + + while (page != NULL) { + RVALUE *p, *pend; + + p = page->objects; + pend = p + MRB_HEAP_PAGE_SIZE; + for (;p < pend; p++) { + (*callback)(mrb, &p->as.basic, data); + } + + page = page->next; + } +} + #ifdef GC_TEST #ifdef GC_DEBUG static mrb_value gc_test(mrb_state *, mrb_value); @@ -1151,6 +1170,7 @@ void mrb_init_gc(mrb_state *mrb) { struct RClass *gc; + gc = mrb_define_module(mrb, "GC"); mrb_define_class_method(mrb, gc, "start", gc_start, MRB_ARGS_NONE()); diff --git a/src/hash.c b/src/hash.c index 882dd3121..5d78a6ea7 100644 --- a/src/hash.c +++ b/src/hash.c @@ -651,7 +651,7 @@ mrb_hash_shift(mrb_state *mrb, mrb_value hash) * */ -static mrb_value +mrb_value mrb_hash_clear(mrb_state *mrb, mrb_value hash) { khash_t(ht) *h = RHASH_TBL(hash); @@ -768,7 +768,7 @@ mrb_hash_size_m(mrb_state *mrb, mrb_value self) * {}.empty? #=> true * */ -static mrb_value +mrb_value mrb_hash_empty_p(mrb_state *mrb, mrb_value self) { khash_t(ht) *h = RHASH_TBL(self); |
