Project

General

Profile

Actions

Feature #10030

closed

[PATCH] reduce rb_iseq_struct to 296 bytes

Added by normalperson (Eric Wong) almost 10 years ago. Updated almost 10 years ago.

Status:
Closed
Target version:
[ruby-core:63681]

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

iseq_catch_table_flex.patch (8.94 KB) iseq_catch_table_flex.patch normalperson (Eric Wong), 07/13/2014 07:09 AM
iseq_catch_table_flex_v2.patch (8.72 KB) iseq_catch_table_flex_v2.patch normalperson (Eric Wong), 07/14/2014 01:20 AM
iseq_catch_table_flex_v3.patch (9.05 KB) iseq_catch_table_flex_v3.patch normalperson (Eric Wong), 07/14/2014 06:10 AM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0