aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@ruby-lang.org>2020-06-08 16:55:10 -0700
committerAaron Patterson <tenderlove@ruby-lang.org>2020-06-09 10:44:52 -0700
commit2ba2b32d9e8c6337d8f2292433b3ad920c7fa5ef (patch)
tree54fa85b32da9a49ce83107c1e11830ca80e4f6f1
parent7f3efee1024ba46189aa4a65d08bb87fdcf1bb24 (diff)
downloadruby-2ba2b32d9e8c6337d8f2292433b3ad920c7fa5ef.tar.gz
Freeing cc tables doesn't need access to ID
We don't need to resolve symbols when freeing cc tables, so this commit just changes the id table iterator to look at values rather than keys and values.
-rw-r--r--gc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gc.c b/gc.c
index 63f1629b76..547f9b2035 100644
--- a/gc.c
+++ b/gc.c
@@ -2522,7 +2522,7 @@ cc_table_mark(rb_objspace_t *objspace, VALUE klass)
}
static enum rb_id_table_iterator_result
-cc_table_free_i(ID id, VALUE ccs_ptr, void *data_ptr)
+cc_table_free_i(VALUE ccs_ptr, void *data_ptr)
{
struct cc_tbl_i_data *data = data_ptr;
struct rb_class_cc_entries *ccs = (struct rb_class_cc_entries *)ccs_ptr;
@@ -2542,7 +2542,7 @@ cc_table_free(rb_objspace_t *objspace, VALUE klass, bool alive)
.klass = klass,
.alive = alive,
};
- rb_id_table_foreach(cc_tbl, cc_table_free_i, &data);
+ rb_id_table_foreach_values(cc_tbl, cc_table_free_i, &data);
rb_id_table_free(cc_tbl);
}
}