diff options
author | Aaron Patterson <[email protected]> | 2024-05-24 14:33:03 -0700 |
---|---|---|
committer | Aaron Patterson <[email protected]> | 2024-06-18 09:28:25 -0700 |
commit | a25dd5b12c550a152d9875720b423e141f36dfb0 (patch) | |
tree | 45a035d3c7af749ef9ebf2277b82211d928d289f /vm_eval.c | |
parent | cfc5646cdc2b693aff1f8b74f30093765df16957 (diff) |
Set a fast path for forwardable iseqs
Diffstat (limited to 'vm_eval.c')
-rw-r--r-- | vm_eval.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -215,7 +215,12 @@ vm_call0_body(rb_execution_context_t *ec, struct rb_calling_info *calling, const *reg_cfp->sp++ = argv[i]; } - vm_call_iseq_setup(ec, reg_cfp, calling); + if (ISEQ_BODY(def_iseq_ptr(vm_cc_cme(cc)->def))->param.flags.forwardable) { + vm_call_iseq_fwd_setup(ec, reg_cfp, calling); + } + else { + vm_call_iseq_setup(ec, reg_cfp, calling); + } VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_FINISH); return vm_exec(ec); // CHECK_INTS in this function } |