summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-05-18 11:19:25 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2013-05-18 11:19:25 +0900
commit834ea241e06d084e666bab1644a61f00492db787 (patch)
tree8f4875cf9c8f78336031c964136fe029f9e93e69 /src
parent36216ac6f7373c879ca103a30b55cab21a339415 (diff)
parent8161f0f6d7f89ad723163943d2d3abc38cd02df5 (diff)
downloadmruby-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.c20
-rw-r--r--src/hash.c4
2 files changed, 22 insertions, 2 deletions
diff --git a/src/gc.c b/src/gc.c
index b6493b859..2e5678f7d 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -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);