[#63592] [ruby-trunk - Bug #10009] IO operation is 10x slower in multi-thread environment — normalperson@...
Issue #10009 has been updated by Eric Wong.
3 messages
2014/07/08
[#63682] [ruby-trunk - Feature #10030] [PATCH] reduce rb_iseq_struct to 296 bytes — ko1@...
Issue #10030 has been updated by Koichi Sasada.
3 messages
2014/07/13
[#63703] [ruby-trunk - Feature #10030] [PATCH] reduce rb_iseq_struct to 296 bytes — ko1@...
Issue #10030 has been updated by Koichi Sasada.
3 messages
2014/07/14
[#63743] [ruby-trunk - Bug #10037] Since r46798 on Solaris, "[BUG] rb_vm_get_cref: unreachable" during make — ngotogenome@...
Issue #10037 has been updated by Naohisa Goto.
3 messages
2014/07/15
[#64136] Ruby 2.1.2 (and 2.1.1 and probably others) assumes a libffi with 3 version numbers in extconf.rb — "Jeffrey 'jf' Lim" <jfs.world@...>
As per subject.
4 messages
2014/07/31
[#64138] Re: Ruby 2.1.2 (and 2.1.1 and probably others) assumes a libffi with 3 version numbers in extconf.rb
— "Jeffrey 'jf' Lim" <jfs.world@...>
2014/07/31
On Thu, Jul 31, 2014 at 6:03 PM, Jeffrey 'jf' Lim <jfs.world@gmail.com>
[ruby-core:63685] [ruby-trunk - Feature #10030] [PATCH] reduce rb_iseq_struct to 296 bytes
From:
normalperson@...
Date:
2014-07-13 08:42:17 UTC
List:
ruby-core #63685
Issue #10030 has been updated by Eric Wong.
ko1@atdot.net wrote:
> From what size on which architecture?
x86-64
> On the code:
>
> (1) _catch_table should be catch_table
OK, I will change it back. I renamed it so it'd be easier for the
compiler to detect places where I need to change code.
> (2) I don't like iseq_catch_table_each() macro.
> I like to write like
> ```
> if (iseq->_catch_table) for (i=0; i<iseq->_catch_table->size; i++) {..}
> ```
OK, I didn't want to increase line length or change indentation of
existing code.
How about using a iseq_catch_table_size macro instead:
```
#define iseq_catch_table_size(iseq) \
(iseq->catch_table ? iseq->catch_table->size : 0)
for (i = 0; i < iseq_catch_table_size(iseq); i++) {
...
}
```
----------------------------------------
Feature #10030: [PATCH] reduce rb_iseq_struct to 296 bytes
https://bugs.ruby-lang.org/issues/10030#change-47737
* Author: Eric Wong
* Status: Open
* Priority: Low
* Assignee: Koichi Sasada
* Category: core
* Target version: current: 2.2.0
----------------------------------------
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)
--
https://bugs.ruby-lang.org/