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.