[ruby-cvs:55114] Re: normal:r47964 (trunk): cont.c: Optimize fiber_switch callees

SHIBATA Hiroshi hsbt at ruby-lang.org
Thu Oct 16 07:56:31 JST 2014


osx builds is broken by this or related commits.

https://s3.amazonaws.com/archive.travis-ci.org/jobs/38099176/log.txt
https://s3.amazonaws.com/archive.travis-ci.org/jobs/38099174/log.txt

On Thu, Oct 16, 2014 at 7:35 AM,  <normal at ruby-lang.org> wrote:
> normal  2014-10-16 07:35:08 +0900 (Thu, 16 Oct 2014)
>
>   New Revision: 47964
>
>   http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=47964
>
>   Log:
>     cont.c: Optimize fiber_switch callees
>
>     Remove some unnecessary VALUE/struct conversions and aggressively inline
>     functions used during fiber_switch. Either of these changes alone does
>     not yield significant performance increase, but in combination they
>     improve performance by ~6%.
>
>     Arguably, removal of separate VALUE/rb_fiber_t* variables also makes the
>     code more readable in a few places.
>
>     * vm_core.h: declare rb_fiber_t typedef
>       (rb_thread_t): fiber and root_fiber become rb_fiber_t * (from VALUE)
>     * vm.c (rb_thread_mark): use rb_fiber_mark_self
>     * cont.c (rb_fiber_t): prev becomes rb_fiber_t * (from VALUE)
>       (cont_mark, cont_free): simplify conditions
>       (rb_fiber_mark_self): new function
>       (fiber_mark): use rb_fiber_mark_self
>       (cont_save_thread, cont_restore_thread): inline
>       (cont_restore_thread): simplify
>       (fiber_setcontext): simplify conditions
>       (rb_cont_call): remove dereference
>       (fiber_t_alloc): update for rb_fiber_t->prev type change
>       (rb_fiber_start): ditto
>       (fiber_current): extract from rb_fiber_current
>       (return_fiber): move, simplify type checks
>       (rb_fiber_current): use fiber_current
>       (fiber_store): simplify type checks
>       (fiber_switch): ditto, simplify call to fiber_setcontext,
>        use fiber_current
>       (rb_fiber_transfer): update for type changes
>       (rb_fiber_terminate): move, use fiber_switch
>       (rb_fiber_resume): update for type changes
>       (rb_fiber_reset_root_local_storage): ditto
>       (rb_fiber_yield): use rb_fiber_switch instead of rb_fiber_transfer
>       (rb_fiber_m_transfer): ditto
>       [ruby-core:65518] [Feature #10341]
>
>   Modified files:
>     trunk/ChangeLog
>     trunk/cont.c
>     trunk/vm.c
>     trunk/vm_core.h



-- 
SHIBATA Hiroshi hsbt at ruby-lang.org
http://www.hsbt.org/


More information about the ruby-cvs mailing list