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');
> 
> 


Reply via email to