diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-10-15 22:35:08 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-10-15 22:35:08 +0000 |
commit | 5c8c88a3e98d796342992d687115f272076a6409 (patch) | |
tree | 0b2cd72e6c089451927622565ef86d08b70c523e /ChangeLog | |
parent | 71fcbf22a469c50b3cf54c2c4f45338fa1fa7962 (diff) | |
download | ruby-5c8c88a3e98d796342992d687115f272076a6409.tar.gz |
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]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -1,3 +1,32 @@ +Thu Oct 16 06:51:35 2014 Knut Franke <Knut.Franke@gmx.de> + + * 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] + Thu Oct 16 06:25:29 2014 Knut Franke <Knut.Franke@gmx.de> * cont.c (rb_context_t): comment on saved_thread |