diff options
| author | Peter Zhu <peter@peterzhu.ca> | 2025-12-31 11:36:19 -0500 |
|---|---|---|
| committer | Peter Zhu <peter@peterzhu.ca> | 2025-12-31 12:47:43 -0500 |
| commit | 7cf6cc83f3d34dbff6a30457fb008d87106f5e0c (patch) | |
| tree | 3b00d91300300e9130737acc970cd847d8e92559 /vm_method.c | |
| parent | b27d9353a73179f1f8e582d651382b1b4404cab2 (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.c | 4 |
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; |
