The enclosed patch adds tests for the new <savec> and <set Sx, Iy> ops, and also provides a test for the bug described in my previous email.
Simon --- t/op/stacks.t.old Sun Mar 24 16:35:26 2002 +++ t/op/stacks.t Sun Mar 24 17:45:23 2002 @@ -1,6 +1,6 @@ #! perl -w -use Parrot::Test tests => 15; +use Parrot::Test tests => 17; use Test::More; # Tests for stack operations, currently push*, push_*_c and pop* @@ -358,6 +358,50 @@ OUTPUT } +output_is(<<'CODE', <<'OUTPUT', 'save/savec for strings'); + set S0, "Foobar" + savec S0 + chopn S0, 3 + print S0 + print "\n" + restore S2 + print S2 + print "\n" + + set S1, "Foobar" + save S1 + chopn S1, 3 + print S1 + print "\n" + restore S3 + print S3 + print "\n" + + end +CODE +Foo +Foobar +Foo +Foo +OUTPUT + +output_is(<<'CODE', <<'OUTPUT', 'chunk boundary bug'); + set I0, 0 +FOO: set S0, I0 + savec S0 + inc I0 + lt I0, 256, FOO + + rotate_up 2 + + restore S1 + print S1 + print "\n" + end +CODE +254 +OUTPUT + ############################## # set integer registers to some value given by $code... --- t/op/string.t.old Sun Mar 24 16:12:13 2002 +++ t/op/string.t Sun Mar 24 16:36:34 2002 @@ -1,6 +1,6 @@ #! perl -w -use Parrot::Test tests => 64; +use Parrot::Test tests => 65; output_is( <<'CODE', <<OUTPUT, "set_s_s|sc" ); set S4, "JAPH\n" @@ -797,6 +797,32 @@ end CODE +output_is(<<'CODE', <<'OUTPUT', 'int -> string'); + set I5, 1 + set S5, I5 + print S5 + print "\n" + + set S5, -1 + print S5 + print "\n" + + set S5, 0b11111111 + print S5 + print "\n" + + set S5, 0x0000BEEF + print S5 + print "\n" + + end +CODE +1 +-1 +255 +48879 +OUTPUT + # Set all string registers to values given by &$_[0](reg num) sub set_str_regs {