From f3dac884d3c7835a74762238f820f88b332d95c6 Mon Sep 17 00:00:00 2001
From: ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date: Fri, 20 Nov 2015 23:49:31 +0000
Subject: * compile.c (iseq_compile_each): add debug information to NODE_STR  
 strings as default.   [Feature #11725]

* insns.def (freezestring): add new instruction to support adding
  debug information for dynamically constracted strings.

* compile.c (iseq_compile_each): support adding debug information
  for NODE_DSTR with freezestring instruction.

* error.c (rb_error_frozen): change the debug information ID name
  id_debug_created_info and this field should have a 2 element array
  containing path and line information.

* defs/id.def: ditto.

* test/ruby/test_rubyoptions.rb: catch up this fix.

* test/ruby/test_iseq.rb: now frozen strings are not same.




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52688 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
---
 insns.def | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

(limited to 'insns.def')

diff --git a/insns.def b/insns.def
index 33aedfc83d..36a132b585 100644
--- a/insns.def
+++ b/insns.def
@@ -389,6 +389,23 @@ tostring
     val = rb_obj_as_string(val);
 }
 
+/**
+  @c put
+  @e Freeze (dynamically) created strings.
+  @j （埋め込み）文字列を freeze する。もし、debug_info が与えられていれば、それを設定する。
+ */
+DEFINE_INSN
+freezestring
+(VALUE debug_info)
+(VALUE str)
+(VALUE str)
+{
+    if (!NIL_P(debug_info)) {
+	rb_ivar_set(str, id_debug_created_info, debug_info);
+    }
+    rb_str_freeze(str);
+}
+
 /**
   @c put
   @e to Regexp
-- 
cgit v1.2.3

