ZJIT: Add missing rb_zjit_cme_invalidate

This commit is contained in:
Takashi Kokubun 2025-08-28 15:19:04 -07:00
parent 3cc66977b2
commit 51cd877636
2 changed files with 22 additions and 6 deletions

View File

@ -1665,6 +1665,23 @@ class TestZJIT < Test::Unit::TestCase
}, call_threshold: 2
end
def test_method_redefinition_with_module
assert_runs '["original", "redefined"]', %q{
module Foo
def self.foo = "original"
end
def test = Foo.foo
test
result1 = test
def Foo.foo = "redefined"
result2 = test
[result1, result2]
}, call_threshold: 2
end
def test_module_name_with_guard_passes
assert_compiles '"Integer"', %q{
def test(mod)

View File

@ -355,6 +355,7 @@ invalidate_method_cache_in_cc_table(VALUE tbl, ID mid)
if (tbl && rb_managed_id_table_lookup(tbl, mid, &ccs_data)) {
struct rb_class_cc_entries *ccs = (struct rb_class_cc_entries *)ccs_data;
rb_yjit_cme_invalidate((rb_callable_method_entry_t *)ccs->cme);
rb_zjit_cme_invalidate((rb_callable_method_entry_t *)ccs->cme);
if (NIL_P(ccs->cme->owner)) invalidate_negative_cache(mid);
rb_vm_ccs_invalidate_and_free(ccs);
rb_managed_id_table_delete(tbl, mid);
@ -367,9 +368,8 @@ invalidate_callable_method_entry_in_callable_m_table(struct rb_id_table *tbl, ID
{
VALUE cme;
if (tbl && rb_id_table_lookup(tbl, mid, &cme)) {
if (rb_yjit_enabled_p) {
rb_yjit_cme_invalidate((rb_callable_method_entry_t *)cme);
}
rb_yjit_cme_invalidate((rb_callable_method_entry_t *)cme);
rb_zjit_cme_invalidate((rb_callable_method_entry_t *)cme);
rb_id_table_delete(tbl, mid);
RB_DEBUG_COUNTER_INC(cc_invalidate_leaf_callable);
}
@ -413,9 +413,8 @@ invalidate_complemented_method_entry_in_callable_m_table(struct rb_id_table *tbl
{
VALUE cme;
if (tbl && rb_id_table_lookup(tbl, mid, &cme)) {
if (rb_yjit_enabled_p) {
rb_yjit_cme_invalidate((rb_callable_method_entry_t *)cme);
}
rb_yjit_cme_invalidate((rb_callable_method_entry_t *)cme);
rb_zjit_cme_invalidate((rb_callable_method_entry_t *)cme);
rb_id_table_delete(tbl, mid);
RB_DEBUG_COUNTER_INC(cc_invalidate_tree_callable);
}