diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-29 23:42:49 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-29 23:42:49 +0000 |
commit | 4a3a694ca9059bf37b052f1d886cf71f99b480bf (patch) | |
tree | 586e85f18da30cd1465e322209b4b84ba86c8950 /ChangeLog | |
parent | d93f19661073bf10b3120915a65b115f41ec22e4 (diff) | |
download | ruby-4a3a694ca9059bf37b052f1d886cf71f99b480bf.tar.gz |
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
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -1,3 +1,29 @@ +Sat May 30 08:36:04 2015 Eric Wong <e@80x24.org> + + * 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 <e@80x24.org> * variable.c (iv_index_tbl_make): extract from rb_ivar_set |