Mike pointed out that I was missing "end" opcodes in there, so I added them and went ahead and committed this code to CVS. Currently test #7 is failing, but I think it's a legitimate bug- if not, I apologize for breaking the tinderbox ;)
--Josh At 1:15 on 03/28/2002 EST, Josh Wilmes <[EMAIL PROTECTED]> wrote: > > I added some tests which push larger numbers of stack frames- this > improves our coverage in register.c. However, one of the tests is failing > for me. Is this something I did wrong, or did I find a bug? > > I'm getting weird output for the pushp and popp (deep) test. > > --Josh > > Here's the patch: > > Index: t/op/stacks.t > =================================================================== > RCS file: /cvs/public/parrot/t/op/stacks.t,v > retrieving revision 1.12 > diff -u -r1.12 stacks.t > --- t/op/stacks.t 29 Jan 2002 02:32:17 -0000 1.12 > +++ t/op/stacks.t 28 Mar 2002 06:12:31 -0000 > @@ -1,6 +1,6 @@ > #! perl -w > > -use Parrot::Test tests => 15; > +use Parrot::Test tests => 18; > use Test::More; > > # Tests for stack operations, currently push*, push_*_c and pop* > @@ -87,6 +87,23 @@ > 3031 > OUTPUT > > + > +my ($code, $output); > +for (0..1024) { > + $code .= " set I0, $_\n"; > + $code .= " set I31, " . (1024-$_) . "\n"; > + $code .= " pushi\n"; > +} > +for (0..1024) { > + $code .= " popi\n"; > + $code .= " print I0\n"; > + $code .= " print I31\n"; > + $code .= " print \"\\n\"\n"; > + $output .= (1024-$_) . "$_\n"; > +} > +output_is($code, $output, "pushi & popi (deep)" ); > + > + > output_is(<<"CODE", <<'OUTPUT', 'pushs & pops'); > @{[ set_str_regs( sub {$_[0]%2} ) ]} > pushs > @@ -102,6 +119,23 @@ > 01010101010101010101010101010101 > OUTPUT > > + > +($code, $output) = (); > +for (0..1024) { > + $code .= " set S0, \"$_\"\n"; > + $code .= " set S31, \"" . (1024-$_) . "\"\n"; > + $code .= " pushs\n"; > +} > +for (0..1024) { > + $code .= " pops\n"; > + $code .= " print S0\n"; > + $code .= " print S31\n"; > + $code .= " print \"\\n\"\n"; > + $output .= (1024-$_) . "$_\n"; > +} > +output_is($code, $output, "pushs & pops (deep)" ); > + > + > output_is(<<"CODE", <<'OUTPUT', 'pushn & popn'); > @{[ set_num_regs( sub { "1.0".$_ } ) ]} > pushn > @@ -119,6 +153,7 @@ > Seem to have positive Nx after pop > OUTPUT > > + > output_is(<<"CODE", <<'OUTPUT', 'pushp & popp'); > new P0, PerlString > set P0, "BUTTER IN HELL!\\n" > @@ -132,6 +167,25 @@ > CODE > THERE'LL BE NO BUTTER IN HELL! > OUTPUT > + > + > +($code, $output) = (); > +for (0..1024) { > + $code .= " new P0, PerlString\n"; > + $code .= " new P31, PerlString\n"; > + $code .= " set P0, \"$_\"\n"; > + $code .= " set P31, \"" . (1024-$_) . "\"\n"; > + $code .= " pushp\n"; > +} > +for (0..1024) { > + $code .= " popp\n"; > + $code .= " print P0\n"; > + $code .= " print P31\n"; > + $code .= " print \"\\n\"\n"; > + $output .= (1024-$_) . "$_\n"; > +} > +output_is($code, $output, "pushp & popp (deep)" ); > + > > # Test proper stack chunk handling > output_is(<<CODE, <<'OUTPUT', 'save_i & restore_i'); > >