From 18ee7c9a108bf3424814565377c8796e5e455cf7 Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Mon, 19 Feb 2024 18:53:13 -0800 Subject: Clear all refined CCs on reopening refinement mod In cfd7729ce7a31c8b6ec5dd0e99c67b2932de4732 we started using inline caches for refinements. However, we weren't clearing inline caches when defined on a reopened refinement module. Fixes [Bug #20246] --- vm_method.c | 1 + 1 file changed, 1 insertion(+) (limited to 'vm_method.c') diff --git a/vm_method.c b/vm_method.c index ccd1ffb462..d76a1c2352 100644 --- a/vm_method.c +++ b/vm_method.c @@ -301,6 +301,7 @@ rb_clear_method_cache(VALUE klass_or_module, ID mid) VALUE refined_class = rb_refinement_module_get_refined_class(module); rb_clear_method_cache(refined_class, mid); rb_class_foreach_subclass(refined_class, clear_iclass_method_cache_by_id_for_refinements, mid); + rb_clear_all_refinement_method_cache(); } rb_class_foreach_subclass(module, clear_iclass_method_cache_by_id, mid); } -- cgit v1.2.3