Project

General

Profile

Actions

Feature #10185

closed

[PATCH] iseq: free untranslated iseq->iseq at compile

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

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

Description

running "ruby -rpp -e 'pp GC.stat'", a reduction in
malloc usage is shown:

before:
:malloc_increase=>118784,
:oldmalloc_increase=>1178736,

after:
:malloc_increase=>99832,
:oldmalloc_increase=>1031976,

(numbers from x86-64)

  • compile.c (rb_iseq_translate_threaded_code): free iseq->iseq
    (rb_vm_addr2insn): new function for debug
    (rb_iseq_untranslate_threaded_code): ditto

  • iseq.c (iseq_memsize): support iseq->iseq == 0
    (rb_iseq_disasm): untranslate for dump
    (iseq_data_to_ary): ditto
    (rb_iseq_line_trace_each): ditto

  • vm_dump.c (rb_vmdebug_debug_print_pre): ditto

I think we can remove iseq->iseq field from the rb_iseq_t structure in
the future and use transient allocation for the debug functions.
rb_iseq_untranslate_threaded_code is an uncommon code path for debug and
not a performance issue in normal code.


Files

iseq-tc-diet.patch (4.43 KB) iseq-tc-diet.patch normalperson (Eric Wong), 08/29/2014 09:24 PM
iseq-iseq-diet.patch (9.54 KB) iseq-iseq-diet.patch normalperson (Eric Wong), 08/29/2014 11:10 PM
0001-iseq-translate-iseq-inplace.patch (10.1 KB) 0001-iseq-translate-iseq-inplace.patch normalperson (Eric Wong), 09/09/2014 08:21 AM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0