Project

General

Profile

« Previous | Next » 

Revision cbd597e9

Added by ko1 (Koichi Sasada) over 12 years ago

  • 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).

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