summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-08-13 10:33:19 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-08-13 10:33:19 +0900
commit0c1c42c43a8609e212db9ef64e43d5ca04101694 (patch)
treedd92084ae8ff75141b51c6a183bff646946bcadd /gc.c
parentaec93417f04a1726ac4491dd33821a383e4bdb5c (diff)
Move rb_objspace_t* in objspace_reachable_objects_from_root to an argument
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gc.c b/gc.c
index 77d6e5b4d4..cdb4736453 100644
--- a/gc.c
+++ b/gc.c
@@ -2729,6 +2729,8 @@ Init_gc_stress(void)
typedef int each_obj_callback(void *, void *, size_t, void *);
+static void objspace_reachable_objects_from_root(rb_objspace_t *, void (func)(const char *, VALUE, void *), void *);
+
struct each_obj_args {
each_obj_callback *callback;
void *data;
@@ -8337,9 +8339,9 @@ heap_check_moved_i(void *vstart, void *vend, size_t stride, void *data)
}
static VALUE
-gc_check_references_for_moved(VALUE dummy)
+gc_check_references_for_moved(rb_objspace_t *objspace)
{
- rb_objspace_reachable_objects_from_root(root_obj_check_moved_i, NULL);
+ objspace_reachable_objects_from_root(objspace, root_obj_check_moved_i, NULL);
rb_objspace_each_objects(heap_check_moved_i, NULL);
return Qnil;
}
@@ -8375,7 +8377,7 @@ gc_compact_after_gc(rb_objspace_t *objspace, int use_toward_empty, int use_doubl
if (!RTEST(disabled)) rb_gc_enable();
if (use_verifier) {
- gc_check_references_for_moved(Qnil);
+ gc_check_references_for_moved(objspace);
}
rb_clear_method_cache_by_class(rb_cObject);
@@ -9369,6 +9371,12 @@ void
rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *passing_data)
{
rb_objspace_t *objspace = &rb_objspace;
+ objspace_reachable_objects_from_root(objspace, func, passing_data);
+}
+
+static void
+objspace_reachable_objects_from_root(rb_objspace_t *objspace, void (func)(const char *category, VALUE, void *), void *passing_data)
+{
struct root_objects_data data;
struct mark_func_data_struct mfd;