1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/bootstraptest
Alan Wu 7293bfe1bf
YJIT: add support for calling bmethods (#6489)
* YJIT: fix a parameter name

* YJIT: add support for calling bmethods

This commit adds support for the VM_METHOD_TYPE_BMETHOD method type in
YJIT. You can get these type of methods from facilities like
Kernel#define_singleton_method and Module#define_method.

Even though the body of these methods are blocks, the parameter setup
for them is exactly the same as VM_METHOD_TYPE_ISEQ, so we can reuse
the same logic in gen_send_iseq(). You can see this from how
vm_call_bmethod() eventually calls setup_parameters_complex() with
arg_setup_method.

Bmethods do need their frame environment to be setup differently. We
handle this by allowing callers of gen_send_iseq() to control the iseq,
the frame flag, and the prev_ep. The `prev_ep` goes into the same
location as the block handler would go into in an iseq method frame.

Co-authored-by: John Hawthorn <john@hawthorn.email>

Co-authored-by: John Hawthorn <john@hawthorn.email>
2022-10-04 22:48:05 -04:00
..
pending.rb
runner.rb Indent folded bootstraptest dots 2022-10-01 18:53:41 +09:00
test_attr.rb Revert "This commit implements the Object Shapes technique in CRuby." 2022-09-30 16:01:50 -07:00
test_autoload.rb
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
test_exception.rb
test_fiber.rb
test_finalizer.rb
test_flip.rb
test_flow.rb
test_fork.rb
test_gc.rb
test_insns.rb
test_io.rb omit random failure in bootstraptest with freebsd 2022-09-06 16:27:12 +09:00
test_jump.rb
test_literal.rb
test_literal_suffix.rb
test_load.rb
test_marshal.rb
test_massign.rb
test_method.rb
test_objectspace.rb
test_proc.rb
test_ractor.rb
test_string.rb
test_struct.rb
test_syntax.rb
test_thread.rb
test_yjit.rb YJIT: add support for calling bmethods (#6489) 2022-10-04 22:48:05 -04:00
test_yjit_30k_ifelse.rb
test_yjit_30k_methods.rb
test_yjit_rust_port.rb Rust YJIT 2022-04-27 11:00:22 -04:00