do not clear cme but invalidate cc
To invalidate a cc, we need to clear cc->klass by `vm_cc_invalidate()`. I hope this patch fix the CI failures.
This commit is contained in:
parent
bcf823fddb
commit
6dc15cc889
Notes:
git
2023-07-29 00:06:34 +00:00
9
gc.c
9
gc.c
@ -10131,15 +10131,12 @@ gc_ref_update_imemo(rb_objspace_t *objspace, VALUE obj)
|
||||
if (cc->klass) {
|
||||
UPDATE_IF_MOVED(objspace, cc->klass);
|
||||
if (!is_live_object(objspace, cc->klass)) {
|
||||
*((VALUE *)(&cc->klass)) = (VALUE)0;
|
||||
vm_cc_invalidate(cc);
|
||||
}
|
||||
|
||||
// cc->cme_ is available if cc->klass is given
|
||||
|
||||
if (cc->cme_) {
|
||||
else if (cc->cme_) { // cc->cme_ is available if cc->klass is given
|
||||
TYPED_UPDATE_IF_MOVED(objspace, struct rb_callable_method_entry_struct *, cc->cme_);
|
||||
if (!is_live_object(objspace, (VALUE)cc->cme_)) {
|
||||
*((struct rb_callable_method_entry_struct **)(&cc->cme_)) = (struct rb_callable_method_entry_struct *)0;
|
||||
vm_cc_invalidate(cc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user