Add stricter assertions on CC access

This commit is contained in:
John Hawthorn 2025-08-06 13:53:00 -07:00
parent 640a2f1dc7
commit fccd96cc6c

View file

@ -418,6 +418,8 @@ static inline const struct rb_callable_method_entry_struct *
vm_cc_cme(const struct rb_callcache *cc) vm_cc_cme(const struct rb_callcache *cc)
{ {
VM_ASSERT(IMEMO_TYPE_P(cc, imemo_callcache)); VM_ASSERT(IMEMO_TYPE_P(cc, imemo_callcache));
VM_ASSERT(cc->klass != Qundef || !vm_cc_markable(cc));
VM_ASSERT(cc_check_class(cc->klass));
VM_ASSERT(cc->call_ == NULL || // not initialized yet VM_ASSERT(cc->call_ == NULL || // not initialized yet
!vm_cc_markable(cc) || !vm_cc_markable(cc) ||
cc->cme_ != NULL); cc->cme_ != NULL);
@ -430,6 +432,8 @@ vm_cc_call(const struct rb_callcache *cc)
{ {
VM_ASSERT(IMEMO_TYPE_P(cc, imemo_callcache)); VM_ASSERT(IMEMO_TYPE_P(cc, imemo_callcache));
VM_ASSERT(cc->call_ != NULL); VM_ASSERT(cc->call_ != NULL);
VM_ASSERT(cc->klass != Qundef || !vm_cc_markable(cc));
VM_ASSERT(cc_check_class(cc->klass));
return cc->call_; return cc->call_;
} }