ruby/bootstraptest
Alan Wu 9acc73d7c5
YJIT: Optional parameter rework and bugfix (#8220)
* YJIT: Fix splatting empty array with rest param

* YJIT: Rework optional parameter handling to fix corner case

The old code had a few unintuitive parts. The starting PC of the callee
was set in different places; `num_param`, which one would assume to be
static for a particular callee seemingly tallied to different amounts
depending on the what the caller passed; `opts_filled_with_splat` was
greater than zero even when the opts were not filled by items in the
splat array. Functionally, the bits that lets the callee know which
keyword parameters are unspecified were not passed properly when there
are optional parameters and a rest parameter, and then optional
parameters are all filled.

Make `num_param` non-mut and use parameter information in the callee
iseq as-is. Move local variable nil fill and placing of the rest array
out of `gen_push_frame()` as they are only ever relevant for iseq calls.
Always place the rest array at `lead_num + opt_num` to fix the
previously buggy situation.

* YJIT: Compile splat calls to iseqs with rest params

Test interactions with optional parameters.
2023-08-15 10:08:48 -04:00
..
pending.rb
runner.rb Remove a warning in bootstraptest/runner.rb 2023-03-19 21:02:21 -07:00
test_attr.rb Revert "Revert "This commit implements the Object Shapes technique in CRuby."" 2022-10-11 08:40:56 -07:00
test_autoload.rb support concurrent btest execution 2022-02-06 03:05:47 +09:00
test_block.rb
test_class.rb
test_constant_cache.rb Finer-grained constant cache invalidation (take 2) 2022-04-01 14:48:22 -04:00
test_env.rb
test_eval.rb btest: assign $stderr = STDOUT instead of IO#reopen to be more portable 2021-12-16 16:16:40 +09:00
test_exception.rb
test_fiber.rb support concurrent btest execution 2022-02-06 03:05:47 +09:00
test_finalizer.rb
test_flip.rb
test_flow.rb
test_fork.rb
test_gc.rb s/mjit/rjit/ 2023-03-06 23:44:01 -08:00
test_insns.rb Emit special instruction for array literal + .(hash|min|max) 2023-04-18 17:16:22 -07:00
test_io.rb omit random failure in bootstraptest with freebsd 2022-09-06 16:27:12 +09:00
test_jump.rb btest: assign $stderr = STDOUT instead of IO#reopen to be more portable 2021-12-16 16:16:40 +09:00
test_literal.rb [wasm] bootstraptest, basictest: disable backquote literal tests 2022-01-19 11:19:06 +09:00
test_literal_suffix.rb
test_load.rb Skip a flaky test that might not work 2023-03-17 09:06:52 -07:00
test_marshal.rb
test_massign.rb
test_method.rb support concurrent btest execution 2022-02-06 03:05:47 +09:00
test_objectspace.rb
test_proc.rb
test_ractor.rb Fix a typo [ci skip] 2023-07-17 00:15:05 +09:00
test_rjit.rb RJIT: Fix unspecified_bits with locals 2023-04-26 18:12:53 -07:00
test_string.rb
test_struct.rb
test_syntax.rb btest: assign $stderr = STDOUT instead of IO#reopen to be more portable 2021-12-16 16:16:40 +09:00
test_thread.rb Skip a flaky test for RJIT 2023-07-11 14:39:32 -07:00
test_yjit.rb YJIT: Optional parameter rework and bugfix (#8220) 2023-08-15 10:08:48 -04:00
test_yjit_30k_ifelse.rb * append newline at EOF. [ci skip] 2021-10-21 08:12:53 +09:00
test_yjit_30k_methods.rb * append newline at EOF. [ci skip] 2021-10-21 08:12:53 +09:00
test_yjit_rust_port.rb Rust YJIT 2022-04-27 11:00:22 -04:00