summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-11-19 12:19:46 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-11-19 12:19:46 +0900
commit6a9efd68491a4340d990dedfd22de46ea2b3db45 (patch)
tree7610fb9fb45dc2545bbfe40b2a95e6e4088b7818 /src
parent9b2454c94dd12ead5e3d3c724da61b05c2e54fd8 (diff)
downloadmruby-6a9efd68491a4340d990dedfd22de46ea2b3db45.tar.gz
mruby-6a9efd68491a4340d990dedfd22de46ea2b3db45.zip
Invoke `mrb_full_gc()` before `ObjectSpace.count_objects`.
Diffstat (limited to 'src')
-rw-r--r--src/gc.c4
1 files changed, 2 insertions, 2 deletions
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);