Ensure ObjectSpace.dump won't call cc_cme on invalidated CC

This commit is contained in:
John Hawthorn 2025-08-06 13:44:46 -07:00
parent a9f6fe0914
commit 640a2f1dc7

View file

@ -451,13 +451,16 @@ dump_object(VALUE obj, struct dump_config *dc)
break; break;
case imemo_callcache: case imemo_callcache:
{
VALUE klass = ((const struct rb_callcache *)obj)->klass;
if (klass != Qundef) {
mid = vm_cc_cme((const struct rb_callcache *)obj)->called_id; mid = vm_cc_cme((const struct rb_callcache *)obj)->called_id;
if (mid != 0) { if (mid != 0) {
dump_append(dc, ", \"called_id\":"); dump_append(dc, ", \"called_id\":");
dump_append_id(dc, mid); dump_append_id(dc, mid);
VALUE klass = ((const struct rb_callcache *)obj)->klass; }
if (klass != 0) {
dump_append(dc, ", \"receiver_class\":"); dump_append(dc, ", \"receiver_class\":");
dump_append_ref(dc, klass); dump_append_ref(dc, klass);
} }