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
Updated by normalperson (Eric Wong) over 9 years ago
normalperson@yhbt.net wrote:
File 0002-iseq-remove-iseq-iseq-field-270-262-bytes-on-64-bit.patch added
Ugh, forget 2/2. I forgot your comment in [ruby-core:64883] already
on out-of-tree compilers. But I may still overload this field
for compile_data in the future (but I guess I can't use anonymous union
feature of GNU C :x)
Updated by nobu (Nobuyoshi Nakada) over 9 years ago
arg_simple
is 0..3, not 0..2.
Updated by ko1 (Koichi Sasada) over 9 years ago
-1 because of readability.
But it is possible that nobody reads it.
I don't against it but I may fix it later.
Updated by normalperson (Eric Wong) over 9 years ago
I reject 0002, but I don't think 0001 hurts readability.
I will update arg_simple to 0..3 from nobu's comment.
Updated by normalperson (Eric Wong) about 6 years ago
- Status changed from Open to Closed
- Assignee changed from ko1 (Koichi Sasada) to normalperson (Eric Wong)