insns.def (send, invokesuper, invokeblock, opt_*), vm_core.h:
use only a ci' (rb_call_info_t) parameter instead of using parameters such as op_id', 'op_argc', blockiseq' and flag. These information are stored in rb_call_info_t at the compile time. This technique simplifies parameter passings at related function calls (~10% speedups for simple mehtod invocation at my machine). rb_call_info_t' also has new function pointer variable call'. This call' variable enables to customize method (block)
invocation process for each place. However, it always call vm_call_general()' at this changes. rb_call_info_t' also has temporary variables for method
(block) invocation.
vm_core.h, compile.c, insns.def: introduce VM_CALL_ARGS_SKIP_SETUP
VM_CALL macro. This flag indicates that this call can skip
caller_setup (block arg and splat arg).
compile.c: catch up above changes.
iseq.c: catch up above changes (especially for TS_CALLINFO).
tool/instruction.rb: catch up above chagnes.
vm_insnhelper.c, vm_insnhelper.h: ditto. Macros and functions
parameters are changed.
vm_eval.c (vm_call0): ditto (it will be rewriten soon).
use only a
ci' (rb_call_info_t) parameter instead of using parameters such as
op_id', 'op_argc',blockiseq' and flag. These information are stored in rb_call_info_t at the compile time. This technique simplifies parameter passings at related function calls (~10% speedups for simple mehtod invocation at my machine).
rb_call_info_t' also has new function pointer variablecall'. This
call' variable enables to customize method (block)invocation process for each place. However, it always call
vm_call_general()' at this changes.
rb_call_info_t' also has temporary variables for method(block) invocation.
VM_CALL macro. This flag indicates that this call can skip
caller_setup (block arg and splat arg).
parameters are changed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37180 b2dd03c8-39d4-4d8f-98ff-823fe69b080e