Project

General

Profile

Actions

Backport #8149

closed

[patch] iseq: remove duplicate strings for file paths

Added by tmm1 (Aman Karmani) about 11 years ago. Updated over 10 years ago.


Description

with:
./ruby -Ilib -e' GC.start; p ObjectSpace.each_object(String).to_a.select{ |s| s =~ /rubygems/defaults/ }.inject(Hash.new 0){|h,s| h[s]+=1; h} '

before:
{"/Users/test/code/ruby-trunk/lib/rubygems/defaults.rb"=>3}

after:
{"/Users/test/code/ruby-trunk/lib/rubygems/defaults.rb"=>1}

diff --git a/iseq.c b/iseq.c
index 288d3bf..72c92bd 100644
--- a/iseq.c
+++ b/iseq.c
@@ -188,7 +188,10 @@ iseq_location_setup(rb_iseq_t *iseq, VALUE path, VALUE absolute_path, VALUE name
{
rb_iseq_location_t *loc = &iseq->location;
loc->path = path;

  • loc->absolute_path = absolute_path;
  • if (RTEST(absolute_path) && rb_str_cmp(path, absolute_path) == 0)
  •    loc->absolute_path = path;
    
  • else
  •    loc->absolute_path = absolute_path;
    
    loc->label = loc->base_label = name;
    loc->first_lineno = first_lineno;
    return loc;
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0