From: Eric Wong Date: 2014-10-15T23:30:09+00:00 Subject: [ruby-core:65734] Re: [ruby-cvs:55113] normal:r47964 (trunk): cont.c: Optimize fiber_switch callees Eric Wong wrote: > +Cc: Knut Franke (author) and ruby-core > Investigating Build fix only in r47966, I'll see what fails when FIBER_USE_NATIVE==0... > SHIBATA Hiroshi wrote: > > 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, 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@ruby-lang.org > > http://www.hsbt.org/