summaryrefslogtreecommitdiff
path: root/vm_callinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'vm_callinfo.h')
-rw-r--r--vm_callinfo.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/vm_callinfo.h b/vm_callinfo.h
index 1629d9f0a9..ccc28eb527 100644
--- a/vm_callinfo.h
+++ b/vm_callinfo.h
@@ -26,6 +26,7 @@ enum vm_call_flag_bits {
VM_CALL_OPT_SEND_bit, // internal flag
VM_CALL_KW_SPLAT_MUT_bit, // kw splat hash can be modified (to avoid allocating a new one)
VM_CALL_ARGS_SPLAT_MUT_bit, // args splat can be modified (to avoid allocating a new one)
+ VM_CALL_FORWARDING_bit, // m(...)
VM_CALL__END
};
@@ -42,6 +43,7 @@ enum vm_call_flag_bits {
#define VM_CALL_OPT_SEND (0x01 << VM_CALL_OPT_SEND_bit)
#define VM_CALL_KW_SPLAT_MUT (0x01 << VM_CALL_KW_SPLAT_MUT_bit)
#define VM_CALL_ARGS_SPLAT_MUT (0x01 << VM_CALL_ARGS_SPLAT_MUT_bit)
+#define VM_CALL_FORWARDING (0x01 << VM_CALL_FORWARDING_bit)
struct rb_callinfo_kwarg {
int keyword_len;
@@ -333,6 +335,8 @@ vm_cc_new(VALUE klass,
*((struct rb_callable_method_entry_struct **)&cc->cme_) = (struct rb_callable_method_entry_struct *)cme;
*((vm_call_handler *)&cc->call_) = call;
+ VM_ASSERT(RB_TYPE_P(klass, T_CLASS) || RB_TYPE_P(klass, T_ICLASS));
+
switch (type) {
case cc_type_normal:
break;