From: Allison Randal <[EMAIL PROTECTED]> Date: Fri, 18 Jul 2008 09:26:05 -0700
Bob Rogers wrote: > The same Kea-CL tests are failing in pdd25cx revision 29565 . . . In the new implementation 'pushaction' subs are no longer automatically run when executing an exception handler or continuation. The *only* way to run a pushaction sub is with 'popmark'. (Also, dynamic_env is no longer unrolled with the execution of continuations or exception handlers.) That could be a problem. Given sub A calls B calls C, where B does pushaction, and C throws an exception (or calls a continuation) that is caught by A, how does A know that it needs to push/pop a mark? I could do pushmark everywhere I take a continuation, and popmark at every continuation destination . . . but what's the advantage to requiring this boilerplate PIR for every continuation? And what happens when some sub A doesn't obey this protocol? In that case, sub B would not be able to count on having its pushaction called when exited. I updated all the code I could find using 'pushaction' in the repository. It looks like Kea-CL isn't in the Parrot repository. Do you have it in a public repository I can submit a patch to? It's a Subversion repository at https://rgrjr.dyndns.org/svn/kea-cl/trunk/ these days (with apologies for the lame cert). The relevant PIR-generating code is written in Lisp, however, so I don't expect a patch. (At least I don't consider it reasonable to expect one, but if you happen to be keen on it, go for it!) I won't hold up the merge for external languages, since we still have nearly a full month before the next Parrot release. Allison That's fine; I may be the only one on the planet who needs pushaction these days. ;-} -- Bob