summaryrefslogtreecommitdiff
path: root/vm_callinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'vm_callinfo.h')
-rw-r--r--vm_callinfo.h16
1 files changed, 11 insertions, 5 deletions
diff --git a/vm_callinfo.h b/vm_callinfo.h
index 700fd3dc6c..09f755c818 100644
--- a/vm_callinfo.h
+++ b/vm_callinfo.h
@@ -449,6 +449,10 @@ struct rb_class_cc_entries {
};
#if VM_CHECK_MODE > 0
+
+const rb_callable_method_entry_t *rb_vm_lookup_overloaded_cme(const rb_callable_method_entry_t *cme);
+void rb_vm_dump_overloaded_cme_table(void);
+
static inline bool
vm_ccs_p(const struct rb_class_cc_entries *ccs)
{
@@ -459,15 +463,17 @@ static inline bool
vm_cc_check_cme(const struct rb_callcache *cc, const rb_callable_method_entry_t *cme)
{
if (vm_cc_cme(cc) == cme ||
- (cme->def->iseq_overload && vm_cc_cme(cc) == cme->def->body.iseq.mandatory_only_cme)) {
+ (cme->def->iseq_overload && vm_cc_cme(cc) == rb_vm_lookup_overloaded_cme(cme))) {
return true;
}
else {
#if 1
- fprintf(stderr, "iseq_overload:%d mandatory_only_cme:%p eq:%d\n",
- (int)cme->def->iseq_overload,
- (void *)cme->def->body.iseq.mandatory_only_cme,
- vm_cc_cme(cc) == cme->def->body.iseq.mandatory_only_cme);
+ // debug print
+
+ fprintf(stderr, "iseq_overload:%d\n", (int)cme->def->iseq_overload);
+ rp(cme);
+ rp(vm_cc_cme(cc));
+ rb_vm_lookup_overloaded_cme(cme);
#endif
return false;
}