Project

General

Profile

Actions

Feature #10274

closed

[PATCH 0/2] more rb_iseq_t reductions (and more planned)

Added by normalperson (Eric Wong) over 9 years ago. Updated about 6 years ago.

Status:
Closed
Target version:
-
[ruby-core:65185]

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

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.

Actions #6

Updated by naruse (Yui NARUSE) over 6 years ago

  • Target version deleted (2.2.0)

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)
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0