ruby-changes:3131
From: ko1@a...
Date: 25 Dec 2007 02:41:55 +0900
Subject: [ruby-changes:3131] ko1 - Ruby:r14623 (trunk): * compile.c (iseq_compile_each): add a "pop" insn after break
ko1 2007-12-25 02:41:29 +0900 (Tue, 25 Dec 2007) New Revision: 14623 Modified files: trunk/ChangeLog trunk/bootstraptest/test_knownbug.rb trunk/bootstraptest/test_syntax.rb trunk/compile.c Log: * compile.c (iseq_compile_each): add a "pop" insn after break to fix stack consistency error. [ruby-core:14385] * bootstraptest/test_syntax.rb: add tests for above. * bootstraptest/test_knownbug.rb: remove fixed bug. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/compile.c?r1=14623&r2=14622 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14623&r2=14622 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bootstraptest/test_syntax.rb?r1=14623&r2=14622 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bootstraptest/test_knownbug.rb?r1=14623&r2=14622 Index: ChangeLog =================================================================== --- ChangeLog (revision 14622) +++ ChangeLog (revision 14623) @@ -1,3 +1,12 @@ +Tue Dec 25 02:15:39 2007 Koichi Sasada <ko1@a...> + + * compile.c (iseq_compile_each): add a "pop" insn after break + to fix stack consistency error. [ruby-core:14385] + + * bootstraptest/test_syntax.rb: add tests for above. + + * bootstraptest/test_knownbug.rb: remove fixed bug. + Tue Dec 25 01:54:36 2007 Yukihiro Matsumoto <matz@r...> * id.c (Init_id): remove several unused symbols. [ruby-core:14362] Index: bootstraptest/test_syntax.rb =================================================================== --- bootstraptest/test_syntax.rb (revision 14622) +++ bootstraptest/test_syntax.rb (revision 14623) @@ -662,3 +662,22 @@ foo } +assert_equal 'ok', %q{ + counter = 2 + while true + counter -= 1 + next if counter != 0 + break + end + :ok +}, '[ruby-core:14385]' + +assert_equal 'ok', %q{ + counter = 2 + while true + counter -= 1 + next if counter != 0 + break :ok + end # direct +}, '[ruby-core:14385]' + Index: bootstraptest/test_knownbug.rb =================================================================== --- bootstraptest/test_knownbug.rb (revision 14622) +++ bootstraptest/test_knownbug.rb (revision 14623) @@ -2,12 +2,3 @@ # This test file concludes tests which point out known bugs. # So all tests will cause failure. # - -assert_normal_exit %q{ - counter = 2 - while true - counter -= 1 - next if counter != 0 - break - end -}, '[ruby-core:14385]' Index: compile.c =================================================================== --- compile.c (revision 14622) +++ compile.c (revision 14623) @@ -2928,6 +2928,7 @@ iseq->compile_data->loopval_popped); ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->end_label); + ADD_INSN(ret, nd_line(node), pop); } else if (iseq->type == ISEQ_TYPE_BLOCK) { break_by_insn: -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml