diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rwxr-xr-x | tool/instruction.rb | 27 |
2 files changed, 21 insertions, 10 deletions
@@ -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 |