summaryrefslogtreecommitdiff
path: root/vm_method.c
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2023-02-03 22:42:13 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2023-03-05 22:11:20 -0800
commite731ced2717ed151369b2d6635452ffdf0c96e43 (patch)
tree7de0efd0c4a1c90a9f59479c9094ea9c070cf44f /vm_method.c
parentfa0b9c1c97ba1ab03e2675ce96bceda9ef046127 (diff)
downloadruby-e731ced2717ed151369b2d6635452ffdf0c96e43.tar.gz
Implement method call
Diffstat (limited to 'vm_method.c')
-rw-r--r--vm_method.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/vm_method.c b/vm_method.c
index 82c29624c1..4cb96cc7fd 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -124,6 +124,7 @@ vm_cme_invalidate(rb_callable_method_entry_t *cme)
RB_DEBUG_COUNTER_INC(cc_cme_invalidate);
rb_yjit_cme_invalidate(cme);
+ rb_mjit_cme_invalidate(cme);
}
static int
@@ -188,6 +189,7 @@ clear_method_cache_by_id_in_class(VALUE klass, ID mid)
if (cc_tbl && rb_id_table_lookup(cc_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_mjit_cme_invalidate((rb_callable_method_entry_t *)ccs->cme);
if (NIL_P(ccs->cme->owner)) invalidate_negative_cache(mid);
rb_vm_ccs_free(ccs);
rb_id_table_delete(cc_tbl, mid);
@@ -201,6 +203,9 @@ clear_method_cache_by_id_in_class(VALUE klass, ID mid)
if (rb_yjit_enabled_p() && rb_id_table_lookup(cm_tbl, mid, &cme)) {
rb_yjit_cme_invalidate((rb_callable_method_entry_t *)cme);
}
+ if (mjit_enabled && rb_id_table_lookup(cm_tbl, mid, &cme)) {
+ rb_mjit_cme_invalidate((rb_callable_method_entry_t *)cme);
+ }
rb_id_table_delete(cm_tbl, mid);
RB_DEBUG_COUNTER_INC(cc_invalidate_leaf_callable);
}