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,10 +1885,12 @@ 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