diff options
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -25,20 +25,20 @@ Tue Oct 23 14:06:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> Tue Oct 23 12:57:29 2012 Koichi Sasada <ko1@atdot.net> * vm_core.h, vm_insnhelper.c, vm_eval.c (OPT_CALL_CFUNC_WITHOUT_FRAME): - add a new otpimization and its macro `OPT_CALL_CFUNC_WITHOUT_FRAME'. + add a new optimization and its macro `OPT_CALL_CFUNC_WITHOUT_FRAME'. This optimization makes all cfunc method calls `frameless', which - is fster than ordinal cfunc method call. + is faster than ordinal cfunc method call. If `frame' is needed (for example, it calls another method with `rb_funcall()'), then build a frame. In other words, this optimization delays frame building. However, to delay the frame building, we need additional overheads: (1) Store the last call information. - (2) Check the delayed frame buidling before the frame is needed. + (2) Check the delayed frame building before the frame is needed. (3) Overhead to build a delayed frame. rb_thread_t::passed_ci is storage of delayed cfunc call information. (1) is lightweight because it is only 1 assignment to `passed_ci'. To achieve (2), we modify GET_THREAD() to check `passed_ci' every - time. It causes 10% overhead on my envrionment. + time. It causes 10% overhead on my environment. This optimization only works for cfunc methods which do not need their `frame'. After evaluation on my environment, this optimization does not |