Issue #10256 has been updated by Koichi Sasada.


-1 because of performance concern (indirect access).

I'm not sure how it is impact for not so smart CPUs.
(I wondered that recent CPU doesn't care such indirection, maybe they have smart cache, branch prediction and so on.)


----------------------------------------
Feature #10256: [PATCH] reduce rb_call_info_t 96 => 88 bytes on 64-bit
https://bugs.ruby-lang.org/issues/10256#change-48985

* Author: Eric Wong
* Status: Open
* Priority: Normal
* Assignee: Koichi Sasada
* Category: core
* Target version: current: 2.2.0
----------------------------------------
Instead of using an 8-byte function pointer, use a small index
(may be <=1 byte, but currently 2 bytes for alignment) as array offset
and pack it next to flags (where only 9 bits are used).

Unfortunately, we cannot rely on C99, yet, so maintenance might be
a little uglier (but I think our test suite is good enough to cover).

Every word saved on rb_call_info_t seems to result in over 50K in startup
savings ("valgrind ruby -e exit").

before:
  total heap usage: 49,111 allocs, 19,776 frees, 8,444,054 bytes allocated
after:
  total heap usage: 49,057 allocs, 19,721 frees, 8,390,916 bytes allocated

Performance does not seem bad on Xeon E3-1230 v3 (8MB cache),
(minor +/- across the board):
http://80x24.org/bmlog-20140918-035740.9493


---Files--------------------------------
0001-rb_call_info_t-reduce-from-96-88-bytes-on-64-bit.patch (10.5 KB)
0001-make-rb_method_definition_t-smaller-via-rb_method_cf.patch (5.4 KB)


-- 
https://bugs.ruby-lang.org/