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.