[#65451] [ruby-trunk - Feature #10333] [PATCH 3/1] optimize: "yoda literal" == string — ko1@...

Issue #10333 has been updated by Koichi Sasada.

9 messages 2014/10/07

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

From: Eric Wong <normalperson@...>
Date: 2014-10-15 23:30:09 UTC
List: ruby-core #65734
Eric Wong <[email protected]> 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 <[email protected]> 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,  <[email protected]> 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 [email protected]
> > http://www.hsbt.org/

In This Thread

Prev Next