summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mrbgems/mruby-objectspace/test/objectspace.rb2
-rw-r--r--src/gc.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/mrbgems/mruby-objectspace/test/objectspace.rb b/mrbgems/mruby-objectspace/test/objectspace.rb
index 4731d53b5..0553b97e2 100644
--- a/mrbgems/mruby-objectspace/test/objectspace.rb
+++ b/mrbgems/mruby-objectspace/test/objectspace.rb
@@ -31,8 +31,8 @@ assert('ObjectSpace.count_objects') do
1000.times do
objs << {}
end
- objs = nil
ObjectSpace.count_objects(h)
+ objs = nil
GC.start
ObjectSpace.count_objects(h_after)
diff --git a/src/gc.c b/src/gc.c
index 794a22e9e..6d2b18b96 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -177,7 +177,7 @@ gettimeofday_time(void)
#define GC_STEP_SIZE 1024
-/* white: 011, black: 100, gray: 000 */
+/* white: 001 or 010, black: 100, gray: 000 */
#define GC_GRAY 0
#define GC_WHITE_A 1
#define GC_WHITE_B (1 << 1)
@@ -1494,7 +1494,6 @@ gc_each_objects(mrb_state *mrb, mrb_gc *gc, mrb_each_object_callback *callback,
{
mrb_heap_page* page;
- mrb_full_gc(mrb);
page = gc->heaps;
while (page != NULL) {
RVALUE *p;
@@ -1514,6 +1513,7 @@ mrb_objspace_each_objects(mrb_state *mrb, mrb_each_object_callback *callback, vo
{
mrb_bool iterating = mrb->gc.iterating;
+ mrb_full_gc(mrb);
mrb->gc.iterating = TRUE;
if (iterating) {
gc_each_objects(mrb, &mrb->gc, callback, data);