diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2023-02-03 22:42:13 -0800 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2023-03-05 22:11:20 -0800 |
commit | e731ced2717ed151369b2d6635452ffdf0c96e43 (patch) | |
tree | 7de0efd0c4a1c90a9f59479c9094ea9c070cf44f /vm_method.c | |
parent | fa0b9c1c97ba1ab03e2675ce96bceda9ef046127 (diff) |
Implement method call
Diffstat (limited to 'vm_method.c')
-rw-r--r-- | vm_method.c | 5 |
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); } |