The "stacktest" patch will fail on the current CVS source, due to a bug in
push_generic_entry.

-- 
Jason
Index: t/op/stacks.t
===================================================================
RCS file: /home/perlcvs/parrot/t/op/stacks.t,v
retrieving revision 1.3
diff -u -r1.3 stacks.t
--- t/op/stacks.t       2001/10/14 00:43:50     1.3
+++ t/op/stacks.t       2001/10/20 15:36:21
@@ -8,7 +8,7 @@
 # Still to write: tests for (push|pop)_p(_c)?
 #                 tests for warp, unwarp and set_warp
 
-use Parrot::Test tests => 9;
+use Parrot::Test tests => 10;
 
 output_is( <<"CODE", <<'OUTPUT', "pushi & popi" );
 @{[ set_int_regs( sub { $_[0]} )]}
@@ -143,6 +143,35 @@
 Seem to have positive Nx after pop
 OUTPUT
 }
+
+# Test proper stack chunk handling
+output_is(<<CODE, <<'OUTPUT', 'save_i & restore_i');
+       set     I3, 1
+
+testloop:
+       set     I0, 0
+       set     I1, I3
+
+saveloop:
+       inc     I0
+       save    I0
+       ne      I0, I1, saveloop
+
+restoreloop:
+       restore I0
+       ne      I0, I1, error
+       dec     I1
+       ne      I1, 0, restoreloop
+       
+       add     I3, I3, 1
+       ne      I3, 769, testloop       # At least 3 stack chunks
+
+       print   "OK\\n"
+error: end
+CODE
+OK
+OUTPUT
+
 
 # Now, to make it do BAD THINGS!
 output_is(<<"CODE",'No more I register frames to pop!','ENO I frames');
Index: stacks.c
===================================================================
RCS file: /home/perlcvs/parrot/stacks.c,v
retrieving revision 1.6
diff -u -r1.6 stacks.c
--- stacks.c    2001/10/19 17:14:21     1.6
+++ stacks.c    2001/10/20 15:39:03
@@ -92,6 +92,7 @@
         new_chunk->prev = chunk_base;
         chunk_base->next = new_chunk;
         interpreter->stack_top = &new_chunk->entry[0];
+        chunk_base = new_chunk;
     }
 
     /* Remember the type */

Reply via email to