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