{"push_id":679621513,"size":1,"distinct_size":1,"ref":"refs/heads/trunk","head":"9d9aea7fe50f6340829faa105d9ffe08ebaee658","before":"cdd9ff6fc89c565ce7205213c74997d10b6ddb42","commits":[{"sha":"9d9aea7fe50f6340829faa105d9ffe08ebaee658","author":{"email":"9c2a6e4809aeef7b7712ca4db05a681452f4f748@b2dd03c8-39d4-4d8f-98ff-823fe69b080e","name":"normal"},"message":"variable.c: use indices for generic ivars\n\nThis reduces memory overhead of ivars for common types such as\nT_DATA the same way T_OBJECT does it.\n\nFor 9992 accepted clients on an OpenSSL server, this reduces\nmemory from 77160K to 69248K with the script in\nhttps://bugs.ruby-lang.org/issues/11170\n\n* variable.c (static int special_generic_ivar): move\n  (rb_generic_ivar_table): rewrite for compatibility\n  (gen_ivtbl_bytes): new function\n  (generic_ivar_get): update to use ivar index\n  (generic_ivar_update): ditto\n  (generic_ivar_set): ditto\n  (generic_ivar_defined): ditto\n  (generic_ivar_remove): ditto\n  (rb_mark_generic_ivar): ditto\n  (givar_i): ditto\n  (rb_free_generic_ivar): ditto\n  (rb_mark_generic_ivar_tbl): ditto\n  (rb_generic_ivar_memsize): ditto\n  (rb_copy_generic_ivar): ditto\n  (rb_ivar_set): ditto\n  (rb_ivar_foreach): ditto\n  (rb_ivar_count): ditto\n  (givar_mark_i): remove\n  (gen_ivtbl_mark): new function\n  (gen_ivar_each): ditto\n  (iv_index_tbl_extend): update for struct ivar_update\n  (iv_index_tbl_newsize): ditto\n  [ruby-core:69323] [Feature #11170]\n\ngit-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50678 b2dd03c8-39d4-4d8f-98ff-823fe69b080e","distinct":true,"url":"https://api.github.com/repos/ruby/ruby/commits/9d9aea7fe50f6340829faa105d9ffe08ebaee658"}]}