summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimmy Miller <jimmy.miller@shopify.com>2023-03-16 17:40:36 -0400
committerGitHub <noreply@github.com>2023-03-16 17:40:36 -0400
commit5825d7d4a1a53ba84909a01679f4dfab63fa9739 (patch)
treec750e66a037c074c4d7536faf0a63b4660de7a17
parent473009d7cbafc4a94be53694b5934167072068e6 (diff)
downloadruby-5825d7d4a1a53ba84909a01679f4dfab63fa9739.tar.gz
YJIT: Remove exit for rest and send combo (#7546)
-rw-r--r--bootstraptest/test_yjit.rb8
-rw-r--r--yjit/src/codegen.rs5
2 files changed, 8 insertions, 5 deletions
diff --git a/bootstraptest/test_yjit.rb b/bootstraptest/test_yjit.rb
index d7dd0cd460..8902cd6cde 100644
--- a/bootstraptest/test_yjit.rb
+++ b/bootstraptest/test_yjit.rb
@@ -3654,3 +3654,11 @@ assert_equal "[]", %q{
test(custom)
EMPTY
}
+
+# Rest with send
+assert_equal '[1, 2, 3]', %q{
+ def bar(x, *rest)
+ rest.insert(0, x)
+ end
+ send(:bar, 1, 2, 3)
+}
diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs
index 0afed2effa..31582c26bc 100644
--- a/yjit/src/codegen.rs
+++ b/yjit/src/codegen.rs
@@ -5382,11 +5382,6 @@ fn gen_send_iseq(
return CantCompile;
}
- if iseq_has_rest && flags & VM_CALL_OPT_SEND != 0 {
- gen_counter_incr!(asm, send_iseq_has_rest_and_send);
- return CantCompile;
- }
-
if iseq_has_rest && unsafe { get_iseq_flags_has_block(iseq) } {
gen_counter_incr!(asm, send_iseq_has_rest_and_block);
return CantCompile;