diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2021-05-04 12:35:51 -0400 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2021-10-20 18:19:34 -0400 |
commit | 0758115d112a1ff452876d3689d20e84d5ff1e37 (patch) | |
tree | 50100b0e79bb92d2df0f70a1d2056fe0071e9426 /yjit_iface.h | |
parent | 59e5f6b83b3d55fb4a2e4d9669c31d5f31b1fda0 (diff) |
Implement send with blocks
* Implement send with blocks
Not that much extra work compared to `opt_send_without_block`.
Moved the stack over flow check because it could've exited after changes
are made to cfp.
* rename oswb counters
* Might as well implement sending block to cfuncs
* Disable sending blocks to cfuncs for now
* Reconstruct interpreter sp before calling into cfuncs
In case the callee cfunc calls a method or delegates to a block.
This also has the side benefit of letting call sites that sometimes are
iseq calls and sometimes cfunc call share the same successor.
* only sync with interpreter sp when passing a block
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
Co-authored-by: Aaron Patterson <aaron.patterson@shopify.com>
Diffstat (limited to 'yjit_iface.h')
-rw-r--r-- | yjit_iface.h | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/yjit_iface.h b/yjit_iface.h index a7a89b7c1f..faae80cf15 100644 --- a/yjit_iface.h +++ b/yjit_iface.h @@ -21,32 +21,32 @@ static char yjit_counter_names[] = #__VA_ARGS__; YJIT_DECLARE_COUNTERS( exec_instruction, - oswb_callsite_not_simple, - oswb_kw_splat, - oswb_ic_empty, - oswb_invalid_cme, - oswb_ivar_set_method, - oswb_zsuper_method, - oswb_alias_method, - oswb_undef_method, - oswb_optimized_method, - oswb_missing_method, - oswb_bmethod, - oswb_refined_method, - oswb_unknown_method_type, - oswb_cfunc_ruby_array_varg, - oswb_cfunc_argc_mismatch, - oswb_cfunc_toomany_args, - oswb_iseq_tailcall, - oswb_iseq_arity_error, - oswb_iseq_only_keywords, - oswb_iseq_complex_callee, - oswb_not_implemented_method, - oswb_getter_arity, - oswb_se_receiver_not_heap, - oswb_se_cf_overflow, - oswb_se_cc_klass_differ, - oswb_se_protected_check_failed, + send_callsite_not_simple, + send_kw_splat, + send_ic_empty, + send_invalid_cme, + send_ivar_set_method, + send_zsuper_method, + send_alias_method, + send_undef_method, + send_optimized_method, + send_missing_method, + send_bmethod, + send_refined_method, + send_unknown_method_type, + send_cfunc_ruby_array_varg, + send_cfunc_argc_mismatch, + send_cfunc_toomany_args, + send_iseq_tailcall, + send_iseq_arity_error, + send_iseq_only_keywords, + send_iseq_complex_callee, + send_not_implemented_method, + send_getter_arity, + send_se_receiver_not_heap, + send_se_cf_overflow, + send_se_cc_klass_differ, + send_se_protected_check_failed, leave_se_finish_frame, leave_se_interrupt, |