YJIT: Avoid unnecessary BOP invalidation

Previously we would invalidate BOPs in YJIT when the method registered
as a BOP was redefined on a subclass.
This commit is contained in:
John Hawthorn 2021-12-10 17:08:05 -08:00
parent b563f12297
commit b7ae08992f
Notes: git 2021-12-15 08:23:15 +09:00

2
vm.c
View File

@ -1885,11 +1885,13 @@ rb_vm_check_redefinition_opt_method(const rb_method_entry_t *me, VALUE klass)
if (vm_redefinition_check_method_type(me->def)) {
if (st_lookup(vm_opt_method_def_table, (st_data_t)me->def, &bop)) {
int flag = vm_redefinition_check_flag(klass);
if (flag != 0) {
rb_yjit_bop_redefined(klass, me, (enum ruby_basic_operators)bop);
ruby_vm_redefined_flag[bop] |= flag;
}
}
}
}
static enum rb_id_table_iterator_result
check_redefined_method(ID mid, VALUE value, void *data)