Project

General

Profile

Actions

Feature #10187

closed

minor iseq memory reductions

Feature #10187: minor iseq memory reductions

Added by normalperson (Eric Wong) about 11 years ago. Updated over 7 years ago.

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

Description

Pretty trivial and low impact, but I figure we might as well reduce
memory footprint a few kilobytes where we can and let the reductions
accumulate. Feature #10185 has much bigger impact.

  • [PATCH 1/2] iseq_inline_storage_entry: 24=>16 bytes on x86-64

We may tag the running_thread pointer to avoid making the "once" struct
bigger than "struct iseq_inline_cache_entry".

This only saves a small amount with "valgrind ruby -e exit"
before:
total heap usage: 48,122 allocs, 19,248 frees, 8,110,149 bytes allocated
after:
total heap usage: 48,122 allocs, 19,253 frees, 8,099,197 bytes allocated

  • [PATCH 2/2] rb_call_info_t: 104=>96 bytes on x86-64

This keeps ci->flag and ci->aux.index consistent across 32-bit
and 64-bit platforms.

ci->flag: VM_CALL_* flags only use 9 bits, currently
ci->aux.index: 2 billion ivars per class should be enough for anybody

This saves around 50K allocations on "valgrind ruby -e exit"
before:
total heap usage: 48,122 allocs, 19,253 frees, 8,099,197 bytes allocated
after:
total heap usage: 48,069 allocs, 19,214 frees, 8,047,266 bytes allocated


Files

inline_storage-16.patch (2.45 KB) inline_storage-16.patch normalperson (Eric Wong), 08/30/2014 01:42 AM
call_info-96.patch (8.24 KB) call_info-96.patch normalperson (Eric Wong), 08/30/2014 01:43 AM
call_info-96-v2.patch (8.01 KB) call_info-96-v2.patch normalperson (Eric Wong), 09/09/2014 08:32 AM
Actions

Also available in: PDF Atom