diff --git a/ChangeLog b/ChangeLog index 06b87037e6..902f7e8b83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Jan 24 02:13:07 2008 Yusuke Endoh + + * insns.def (expandarray): fix stack inc. + * bootstraptest/test_knownbug.rb, test_massign.rb: move a fixed test. + Thu Jan 24 01:00:34 2008 NARUSE, Yui * encoding.{c, h} (rb_usascii_encoding): added. diff --git a/bootstraptest/test_knownbug.rb b/bootstraptest/test_knownbug.rb index 9b688fca00..6d1c4721d2 100644 --- a/bootstraptest/test_knownbug.rb +++ b/bootstraptest/test_knownbug.rb @@ -17,14 +17,6 @@ assert_equal 'ok', %q{ end }, '[ruby-core:14537]' -assert_equal 'ok', %q{ - while true - *, z = 1 - break - end - :ok -}, '[ruby-dev:32892]' - assert_equal 'ok', %q{ 1.times do diff --git a/bootstraptest/test_massign.rb b/bootstraptest/test_massign.rb index ad31729a73..0f63dd424a 100644 --- a/bootstraptest/test_massign.rb +++ b/bootstraptest/test_massign.rb @@ -174,3 +174,10 @@ assert_equal 'ok', %q{ :ok }, '[ruby-dev:32581]' +assert_equal 'ok', %q{ + while true + *, z = 1 + break + end + :ok +}, '[ruby-dev:32892]' diff --git a/insns.def b/insns.def index 41c8337156..e9b72b7dc8 100644 --- a/insns.def +++ b/insns.def @@ -450,7 +450,7 @@ DEFINE_INSN expandarray (rb_num_t num, rb_num_t flag) (..., VALUE ary) -(...) // inc += flag == 0x02 ? num : ((num > 0) ? num - 1 + (flag ? 1 : 0) : num + 1 - (flag ? 1 : 0)); +(...) // inc += num - 1 + (flag & 1 ? 1 : 0); { vm_expandarray(GET_CFP(), ary, num, flag); }