зеркало из https://github.com/github/ruby.git
Revert "YJIT: Rest and block_arg support (#7557)"
This reverts commit 5d0a1ffafa
.
This commit is causing sequel in yjit-bench to raise with this stack trace:
```
sequel-5.64.0/lib/sequel/dataset/sql.rb:266:in `literal': wrong argument type Array (expected Proc) (TypeError)
from sequel-5.64.0/lib/sequel/database/misc.rb:269:in `literal'
from sequel-5.64.0/lib/sequel/adapters/shared/sqlite.rb:314:in `column_definition_default_sql'
from sequel-5.64.0/lib/sequel/database/schema_methods.rb:564:in `block in column_definition_sql'
from sequel-5.64.0/lib/sequel/database/schema_methods.rb:564:in `each'
from sequel-5.64.0/lib/sequel/database/schema_methods.rb:564:in `column_definition_sql'
from sequel-5.64.0/lib/sequel/database/schema_methods.rb:634:in `block in column_list_sql'
from sequel-5.64.0/lib/sequel/database/schema_methods.rb:634:in `map'
from sequel-5.64.0/lib/sequel/database/schema_methods.rb:634:in `column_list_sql'
from sequel-5.64.0/lib/sequel/database/schema_methods.rb:753:in `create_table_sql'
from sequel-5.64.0/lib/sequel/adapters/shared/sqlite.rb:348:in `create_table_sql'
from sequel-5.64.0/lib/sequel/database/schema_methods.rb:702:in `create_table_from_generator'
from sequel-5.64.0/lib/sequel/database/schema_methods.rb:203:in `create_table'
from benchmarks/sequel/benchmark.rb:19:in `<main>'
```
This commit is contained in:
Родитель
f67f0d7268
Коммит
30e7561d1d
|
@ -3662,24 +3662,3 @@ assert_equal '[1, 2, 3]', %q{
|
|||
end
|
||||
send(:bar, 1, 2, 3)
|
||||
}
|
||||
|
||||
# Rest with block
|
||||
# Simplified code from railsbench
|
||||
assert_equal '[{"/a"=>"b", :as=>:c, :via=>:post}, [], nil]', %q{
|
||||
def match(path, *rest, &block)
|
||||
[path, rest, block]
|
||||
end
|
||||
|
||||
def map_method(method, args, &block)
|
||||
options = args.last
|
||||
args.pop
|
||||
options[:via] = method
|
||||
match(*args, options, &block)
|
||||
end
|
||||
|
||||
def post(*args, &block)
|
||||
map_method(:post, args, &block)
|
||||
end
|
||||
|
||||
post "/a" => "b", as: :c
|
||||
}
|
||||
|
|
|
@ -5181,9 +5181,9 @@ fn move_rest_args_to_stack(array: Opnd, num_args: u32, ctx: &mut Context, asm: &
|
|||
|
||||
let array_len_opnd = get_array_len(asm, array);
|
||||
|
||||
asm.comment("Side exit if length is less than required");
|
||||
asm.comment("Side exit if length doesn't not equal remaining args");
|
||||
asm.cmp(array_len_opnd, num_args.into());
|
||||
asm.jl(counted_exit!(ocb, side_exit, send_iseq_has_rest_and_splat_not_equal));
|
||||
asm.jbe(counted_exit!(ocb, side_exit, send_splatarray_length_not_equal));
|
||||
|
||||
asm.comment("Push arguments from array");
|
||||
|
||||
|
@ -5413,6 +5413,11 @@ fn gen_send_iseq(
|
|||
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;
|
||||
}
|
||||
|
||||
if iseq_has_rest && unsafe { get_iseq_flags_has_kw(iseq) } {
|
||||
gen_counter_incr!(asm, send_iseq_has_rest_and_kw);
|
||||
return CantCompile;
|
||||
|
|
|
@ -253,10 +253,11 @@ make_counters! {
|
|||
send_send_getter,
|
||||
send_send_builtin,
|
||||
send_iseq_has_rest_and_captured,
|
||||
send_iseq_has_rest_and_splat_fewer,
|
||||
send_iseq_has_rest_and_send,
|
||||
send_iseq_has_rest_and_block,
|
||||
send_iseq_has_rest_and_kw,
|
||||
send_iseq_has_rest_and_optional,
|
||||
send_iseq_has_rest_and_splat_not_equal,
|
||||
send_is_a_class_mismatch,
|
||||
send_instance_of_class_mismatch,
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче