Actions
Feature #10274
closed[PATCH 0/2] more rb_iseq_t reductions (and more planned)
Description
Both of these are pretty simple, low impact patches:
We are close to being able to fit rb_iseq_t in four 64 byte
cache line (we are 262 bytes after these patches,
a milestone is <= 256 bytes).
-
[PATCH 1/2] iseq: reduce from 280 to 272 bytes
- arg_simple is limited to 3 possible values: 0, 1, and 2
- arg_keyword_check is a boolean
- flip_cnt should be int to enforce portable code between 64-bit and
32-bit systems and must fit in FIXNUM space.
I doubt anybody would notice if flip_cnt (or any arg counters)
were 8 bits, even.
-
[PATCH 2/2] iseq: remove iseq->iseq field (270 => 262 bytes on 64-bit)
We may store the original iseq after the encoded iseq to reduce
allocation overhead and use a boolean to denote whether or not
the iseq_encoded field contains data at the end.This simplifies iseq_free and iseq_memsize a little, too.
I will commit in a week or so unless there are objections.
Future:
Move some keyword-related fields into its own struct (similar to
catch table). Maybe compile_data can be split off.
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0