From: "[EMAIL PROTECTED] via RT" <[EMAIL PROTECTED]>
   Date: Fri, 02 Mar 2007 13:45:20 -0800

   Hi,

   I just fixed a GC bug relating to slurpys (a more general one reported
   by Bernhard++, not just specific to tail calls) in the args passing
   code. Please check with the latest in SVN and see if that resolves the
   problem.

Mehmet's original test case runs to completion in r17298, but I'm afraid
it still fails for me if the attached patch is applied, which forces DOD
every time parrot_pass_args is called.  So I think this is a different
issue than the one you fixed.

   (Bob, your patch was heading in the right direction, but I fixed this
   without blocking DOD and more generally than just for tail calls. Thanks
   though!)

Thanks.  I know mine is just a band-aid, and a rather scruffy one at
that . . .

   I hope I have time to investigate further this weekend.  I am also
hoping the solution will also help with returning results after calling
actions, where the results come from a third context, and not the
returning (action) context.  This is a project I got stuck on last fall.

                                        -- Bob

Diffs between last version checked in and current workfile(s):

Index: src/inter_call.c
===================================================================
--- src/inter_call.c    (revision 17298)
+++ src/inter_call.c    (working copy)
@@ -1071,6 +1071,7 @@
     PMC* src_signature;
     PMC* dest_signature;
 
+    Parrot_do_dod_run(interp, 0);
     if (param_or_result == PARROT_PASS_PARAMS) {
         src_signature = interp->args_signature;
         dest_signature = interp->params_signature;

End of diffs.

Reply via email to