dumping ground for random patches and texts
 help / color / mirror / Atom feed
* [PATCH] load.c: use fstring for loaded features and expanded load path
@ 2015-07-04  5:29 Eric Wong
  0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2015-07-04  5:29 UTC (permalink / raw)
  To: spew

Loaded features is an obvious candidate for fstring since
feature paths of Ruby sources are included in iseq locations,
and iseq locations are in the fstring table anyways.

Deduplicating expanded load path can reuse old objects, since since
repeated expansions may recycle before old expanded paths are GC-ed
away.
---
 load.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/load.c b/load.c
index 69be692..91122c7 100644
--- a/load.c
+++ b/load.c
@@ -87,7 +87,7 @@ rb_construct_expanded_load_path(int type, int *has_relative, int *has_non_cache)
 	as_str = rb_get_path_check_convert(path, as_str, level);
 	expanded_path = rb_file_expand_path_fast(as_str, Qnil);
 	rb_str_freeze(expanded_path);
-	rb_ary_push(ary, expanded_path);
+	rb_ary_push(ary, rb_fstring(expanded_path));
     }
     rb_obj_freeze(ary);
     vm->expanded_load_path = ary;
@@ -287,9 +287,9 @@ get_loaded_features_index(void)
 	    VALUE entry, as_str;
 	    as_str = entry = rb_ary_entry(features, i);
 	    StringValue(as_str);
+	    as_str = rb_fstring(rb_str_freeze(as_str));
 	    if (as_str != entry)
 		rb_ary_store(features, i, as_str);
-	    rb_str_freeze(as_str);
 	    features_index_add(as_str, INT2FIX(i));
 	}
 	reset_loaded_features_snapshot();
@@ -560,7 +560,7 @@ rb_provide_feature(VALUE feature)
     }
     rb_str_freeze(feature);
 
-    rb_ary_push(features, feature);
+    rb_ary_push(features, rb_fstring(feature));
     features_index_add(feature, INT2FIX(RARRAY_LEN(features)-1));
     reset_loaded_features_snapshot();
 }
-- 
EW


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2015-07-04  5:29 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-04  5:29 [PATCH] load.c: use fstring for loaded features and expanded load path Eric Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).