Actions
Feature #10030
closed[PATCH] reduce rb_iseq_struct to 296 bytes
Feature #10030:
[PATCH] reduce rb_iseq_struct to 296 bytes
Description
This probably breaks ruby2cext; but I'm not sure if anybody uses that.
May we remove rb_iseq_build_for_ruby2cext?
I will probably have more patches along these lines to reduce iseq-related
allocations. This is probably the most obvious, aside from ruby2cext
compatibility.
Most iseq do not have a catch_table, so avoid needlessly adding
4-8 bytes to the struct for the common case.
- iseq.h (struct iseq_catch_table): new flexible array struct
(iseq_catch_table_each): new iterator macro
(iseq_catch_table_bytes): new size macro - vm_core.h (struct rb_iseq_struct): use _catch_table member
- compile.c (iseq_set_exception_table): update for struct changes
- iseq.c (iseq_free): ditto
- iseq.c (iseq_memsize): ditto
- iseq.c (rb_iseq_disasm): ditto
- iseq.c (iseq_data_to_ary): ditto
- iseq.c (rb_iseq_build_for_ruby2cext): ditto (untested)
- vm.c (vm_exec): ditto
- vm_core.h (struct rb_iseq_struct): ditto
- vm_insnhelper.c (vm_throw): ditto
Files
Actions