From 9d9aea7fe50f6340829faa105d9ffe08ebaee658 Mon Sep 17 00:00:00 2001 From: normal Date: Fri, 29 May 2015 23:42:49 +0000 Subject: variable.c: use indices for generic ivars This reduces memory overhead of ivars for common types such as T_DATA the same way T_OBJECT does it. For 9992 accepted clients on an OpenSSL server, this reduces memory from 77160K to 69248K with the script in https://bugs.ruby-lang.org/issues/11170 * variable.c (static int special_generic_ivar): move (rb_generic_ivar_table): rewrite for compatibility (gen_ivtbl_bytes): new function (generic_ivar_get): update to use ivar index (generic_ivar_update): ditto (generic_ivar_set): ditto (generic_ivar_defined): ditto (generic_ivar_remove): ditto (rb_mark_generic_ivar): ditto (givar_i): ditto (rb_free_generic_ivar): ditto (rb_mark_generic_ivar_tbl): ditto (rb_generic_ivar_memsize): ditto (rb_copy_generic_ivar): ditto (rb_ivar_set): ditto (rb_ivar_foreach): ditto (rb_ivar_count): ditto (givar_mark_i): remove (gen_ivtbl_mark): new function (gen_ivar_each): ditto (iv_index_tbl_extend): update for struct ivar_update (iv_index_tbl_newsize): ditto [ruby-core:69323] [Feature #11170] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50678 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index d9101c8eb7..c8d45266f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,29 @@ +Sat May 30 08:36:04 2015 Eric Wong + + * variable.c (static int special_generic_ivar): move + (rb_generic_ivar_table): rewrite for compatibility + (gen_ivtbl_bytes): new function + (generic_ivar_get): update to use ivar index + (generic_ivar_update): ditto + (generic_ivar_set): ditto + (generic_ivar_defined): ditto + (generic_ivar_remove): ditto + (rb_mark_generic_ivar): ditto + (givar_i): ditto + (rb_free_generic_ivar): ditto + (rb_mark_generic_ivar_tbl): ditto + (rb_generic_ivar_memsize): ditto + (rb_copy_generic_ivar): ditto + (rb_ivar_set): ditto + (rb_ivar_foreach): ditto + (rb_ivar_count): ditto + (givar_mark_i): remove + (gen_ivtbl_mark): new function + (gen_ivar_each): ditto + (iv_index_tbl_extend): update for struct ivar_update + (iv_index_tbl_newsize): ditto + [ruby-core:69323] [Feature #11170] + Sat May 30 08:10:46 2015 Eric Wong * variable.c (iv_index_tbl_make): extract from rb_ivar_set -- cgit v1.2.3