summaryrefslogtreecommitdiff
path: root/vm_method.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2025-12-31 11:36:19 -0500
committerPeter Zhu <peter@peterzhu.ca>2025-12-31 12:47:43 -0500
commit7cf6cc83f3d34dbff6a30457fb008d87106f5e0c (patch)
tree3b00d91300300e9130737acc970cd847d8e92559 /vm_method.c
parentb27d9353a73179f1f8e582d651382b1b4404cab2 (diff)
Register imemo_ment as a pinning object
It sometimes pins itself when it is in the overloaded_cme table.
Diffstat (limited to 'vm_method.c')
-rw-r--r--vm_method.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/vm_method.c b/vm_method.c
index 26dbe4cae8..dcf35527f7 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -1119,6 +1119,10 @@ rb_method_entry_alloc(ID called_id, VALUE owner, VALUE defined_class, rb_method_
VM_ASSERT_TYPE2(defined_class, T_CLASS, T_ICLASS);
}
rb_method_entry_t *me = SHAREABLE_IMEMO_NEW(rb_method_entry_t, imemo_ment, defined_class);
+
+ // mark_and_move_method_entry pins itself when it is in the overloaded_cme table
+ rb_gc_register_pinning_obj((VALUE)me);
+
*((rb_method_definition_t **)&me->def) = def;
me->called_id = called_id;
me->owner = owner;