diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-10-19 10:38:30 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-10-19 10:38:30 +0000 |
commit | f4dbc7a3849988ebe75d3e1031aa50441347c497 (patch) | |
tree | 9750044142c879b0abc569e92dedaeeee5158d12 /ChangeLog | |
parent | 0fc7f4bb304ad07e8172f868d885112a1dcceb0f (diff) | |
download | ruby-f4dbc7a3849988ebe75d3e1031aa50441347c497.tar.gz |
* method.h (rb_method_cfunc_t::invoker): add new field (func ptr)
`invoker'. `invoker' function invoke cfunc body
(rb_method_cfunc_t::func).
`invoker' is set at method definition timing.
With this change, the big `switch' (branch) in `call_cfunc()'
is no longer needed.
However, the performance benefit is only a bit.
* vm_core.h (rb_call_info_t::aux::func): add a new field to store
cfunc body function pointer.
* vm_method.c (call_cfunc_invoker_func): add a new function which
returns a suitable invoke function.
* vm_method.c (setup_method_cfunc_struct): added.
* vm_method.c (rb_add_method): fix to set `invoker'.
* vm_eval.c (vm_call0_body): catch up above changes.
* vm_insnhelper.c (call_cfunc): removed.
* vm_insnhelper.c (vm_call_cfunc): fix to call cfunc body
with `invoker' function.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -1,3 +1,30 @@ +Fri Oct 19 19:29:11 2012 Koichi Sasada <ko1@atdot.net> + + * method.h (rb_method_cfunc_t::invoker): add new field (func ptr) + `invoker'. `invoker' function invoke cfunc body + (rb_method_cfunc_t::func). + `invoker' is set at method definition timing. + With this change, the big `switch' (branch) in `call_cfunc()' + is no longer needed. + However, the performance benefit is only a bit. + + * vm_core.h (rb_call_info_t::aux::func): add a new field to store + cfunc body function pointer. + + * vm_method.c (call_cfunc_invoker_func): add a new function which + returns a suitable invoke function. + + * vm_method.c (setup_method_cfunc_struct): added. + + * vm_method.c (rb_add_method): fix to set `invoker'. + + * vm_eval.c (vm_call0_body): catch up above changes. + + * vm_insnhelper.c (call_cfunc): removed. + + * vm_insnhelper.c (vm_call_cfunc): fix to call cfunc body + with `invoker' function. + Fri Oct 19 16:55:58 2012 Koichi Sasada <ko1@atdot.net> * eval.c, vm_eval.c: use TH_PUSH_TAG() instead of PUSH_TAG(). |