Project

General

Profile

« Previous | Next » 

Revision 7fd11834

Added by ko1 (Koichi Sasada) over 6 years ago

Speedup block.call [Feature #14330]

  • insns.def (getblockparamproxy): introduce new instruction to return
    the rb_block_param_proxy object if possible. This object responds
    to call method and invoke given block (completely similar to yield).

  • method.h (OPTIMIZED_METHOD_TYPE_BLOCK_CALL): add new optimized call type
    which is for rb_block_param_proxy.cal.

  • vm_insnhelper.c (vm_call_method_each_type): ditto.

  • vm_insnhelper.c (vm_call_opt_block_call): ditto.

  • vm_core.h (BOP_CALL, PROC_REDEFINED_OP_FLAG): add check for Proc#call
    redefinition.

  • compile.c (iseq_compile_each0): compile to use new insn
    getblockparamproxy for method call.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e