aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rwxr-xr-xtool/instruction.rb27
2 files changed, 21 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 4251ee485c..e27a0e69ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Wed Apr 27 16:10:35 2016 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * tool/instruction.rb: fix to follow current implementation.
+
Wed Apr 27 15:47:54 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/stringio/stringio.c (strio_s_new): warn if a block is given,
diff --git a/tool/instruction.rb b/tool/instruction.rb
index 4f7d08c369..45117950cf 100755
--- a/tool/instruction.rb
+++ b/tool/instruction.rb
@@ -453,9 +453,9 @@ class RubyVM
pops.concat e_pops
rets.concat e_rets
defopes.concat e_defs
- sp_inc += "#{insn.sp_inc}"
+ sp_inc << "#{insn.sp_inc}"
- body += "{ /* unif: #{i} */\n" +
+ body << "{ /* unif: #{i} */\n" +
passed_vars.map{|rpvars|
pv = rpvars[0]
rv = rpvars[1]
@@ -463,15 +463,22 @@ class RubyVM
}.join("\n") +
"\n" +
redef_vars.map{|v, type|
- "#define #{v} #{v}_#{i}"
- }.join("\n") + "\n" +
- insn.body +
- passed_vars.map{|rpvars|
- "#undef #{rpvars[0][1]}"
+ "#{type} #{v} = #{v}_#{i};"
+ }.join("\n") + "\n"
+ if line = insn.body.instance_variable_get(:@line_no)
+ file = insn.body.instance_variable_get(:@file)
+ body << "#line #{line+1} \"#{file}\"\n"
+ body << insn.body
+ body << "\n#line __CURRENT_LINE__ \"__CURRENT_FILE__\"\n"
+ else
+ body << insn.body
+ end
+ body << redef_vars.keys.map{|v|
+ "#{v}_#{i} = #{v};"
}.join("\n") +
"\n" +
- redef_vars.keys.map{|v|
- "#undef #{v}"
+ passed_vars.map{|rpvars|
+ "#undef #{rpvars[0][1]}"
}.join("\n") +
"\n}\n"
}
@@ -893,7 +900,7 @@ class RubyVM
commit insn.body
commit '#line __CURRENT_LINE__ "__CURRENT_FILE__"'
else
- insn.body
+ commit insn.body
end
make_footer(insn)
end