Delete ID from constant cache table if it becomes empty on ISEQ free
Co-authored-by: John Hawthorn <john@hawthorn.email>
This commit is contained in:
parent
629908586b
commit
8f6eaca2e1
Notes:
git
2022-03-25 01:15:07 +09:00
5
iseq.c
5
iseq.c
@ -129,6 +129,11 @@ iseq_clear_ic_references_i(VALUE *code, VALUE insn, size_t index, void *data)
|
|||||||
|
|
||||||
if (rb_id_table_lookup(vm->constant_cache, id, (VALUE *) &ics)) {
|
if (rb_id_table_lookup(vm->constant_cache, id, (VALUE *) &ics)) {
|
||||||
st_delete(ics, (st_data_t *) &ic_data->ic, (st_data_t *) NULL);
|
st_delete(ics, (st_data_t *) &ic_data->ic, (st_data_t *) NULL);
|
||||||
|
|
||||||
|
if (ics->num_entries == 0) {
|
||||||
|
rb_id_table_delete(vm->constant_cache, id);
|
||||||
|
st_free_table(ics);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user