summaryrefslogtreecommitdiff
path: root/yjit/src/codegen.rs
diff options
context:
space:
mode:
Diffstat (limited to 'yjit/src/codegen.rs')
-rw-r--r--yjit/src/codegen.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index e4cfe16e73..6643247989 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -4929,6 +4929,12 @@ fn gen_send_cfunc(
// push_splat_args does stack manipulation so we can no longer side exit
if flags & VM_CALL_ARGS_SPLAT != 0 {
+ if flags & VM_CALL_OPT_SEND != 0 {
+ // FIXME: This combination is buggy.
+ // For example `1.send(:==, 1, *[])` fails to adjust the stack properly
+ gen_counter_incr!(asm, send_cfunc_splat_send);
+ return CantCompile;
+ }
let required_args : u32 = (cfunc_argc as u32).saturating_sub(argc as u32 - 1);
// + 1 because we pass self
if required_args + 1 >= C_ARG_OPNDS.len() as u32 {