summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gc.c7
-rw-r--r--test/ruby/test_gc_compact.rb2
2 files changed, 5 insertions, 4 deletions
diff --git a/gc.c b/gc.c
index 438715337c..de5e9446f6 100644
--- a/gc.c
+++ b/gc.c
@@ -8171,7 +8171,11 @@ heap_check_moved_i(void *vstart, void *vend, size_t stride, void *data)
void *poisoned = poisoned_object_p(v);
unpoison_object(v, false);
- if (BUILTIN_TYPE(v) != T_NONE) {
+ switch (BUILTIN_TYPE(v)) {
+ case T_NONE:
+ case T_ZOMBIE:
+ break;
+ default:
rb_objspace_reachable_objects_from(v, reachable_object_check_moved_i, (void *)v);
}
@@ -8309,7 +8313,6 @@ rb_gc(void)
int reason = GPR_FLAG_FULL_MARK | GPR_FLAG_IMMEDIATE_MARK |
GPR_FLAG_IMMEDIATE_SWEEP | GPR_FLAG_CAPI;
garbage_collect(objspace, reason);
- gc_finalize_deferred(objspace);
}
int
diff --git a/test/ruby/test_gc_compact.rb b/test/ruby/test_gc_compact.rb
index d2b2c1bb47..5669fd3d6a 100644
--- a/test/ruby/test_gc_compact.rb
+++ b/test/ruby/test_gc_compact.rb
@@ -2,8 +2,6 @@
require 'test/unit'
require 'fiddle'
-return
-
class TestGCCompact < Test::Unit::TestCase
def memory_location(obj)
(Fiddle.dlwrap(obj) >> 1)