From e91ae784bc91f5084e617d3a3e00ebd75162427b Mon Sep 17 00:00:00 2001 From: normal Date: Mon, 14 Jul 2014 07:06:26 +0000 Subject: vm_core.h (struct rb_iseq_struct): reduce to 296 bytes on 64-bit Most iseq do not have a catch_table, so avoid needlessly adding 4-8 bytes to the struct for the common case. Changes from v2: - iseq_catch_table_size removed, use if (...) for (;...;) Changes from v1: - renamed iseq->_catch_table to iseq->catch_table - iseq_catch_table_bytes: made a static inline function - iseq_catch_table_size: new function replaces the iseq_catch_table_each iterator macro * iseq.h (struct iseq_catch_table): new flexible array struct (iseq_catch_table_bytes): allocated size function * vm_core.h (struct rb_iseq_struct): uupdate 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 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_core.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'vm_core.h') diff --git a/vm_core.h b/vm_core.h index 8a8ceeb981..510a4ad4cd 100644 --- a/vm_core.h +++ b/vm_core.h @@ -274,8 +274,7 @@ struct rb_iseq_struct { ID *arg_keyword_table; /* catch table */ - struct iseq_catch_table_entry *catch_table; - int catch_table_size; + struct iseq_catch_table *catch_table; /* for child iseq */ struct rb_iseq_struct *parent_iseq; -- cgit v1.2.3