On Sat, Apr 30, 2005 at 10:40:12AM +0200, Leopold Toetsch wrote: > Patrick R. Michaud <[EMAIL PROTECTED]> wrote: > > > I'd appreciate any gentle nudges towards the appropriate documentation, > > source file, or answer. Thanks! > > I've now created a test for it in t/pmc/object-meths.t: > > .sub go method > ... > P2 = self > tailcallmethod "go" > .end > > Works. But that's not really optimal. Should the invocant be implicitely > "self" and/or do we need a more general syntax: > > .pcc_begin > .arg x > ... > .invocant o > tailcallmethod "foo" > .pcc_end
For my needs (PGE) I definitely need the ability to have a non-self invocant and to pass parameters. > And maybe even > > foo(x, ...) @TAIL_CALL # tail function call > > o.foo(x, ...) @TAIL_CALL # tail method call This would be *really* nice. I'm assuming here that @TAIL_CALL also causes the current routine's caller to receive back any return values from o.foo(x,...) exactly as if this routine had returned it. I can probably make the .pcc wrappers work when I get to that level of optimization if that's what we have available. Just to make sure I have it right, the code (ret) = obj.match(w,x,y,z) .return (ret) then becomes # tailcall version of obj.match(w,x,y,z) .pcc_begin prototyped .arg w .arg x .arg y .arg z P2 = obj tailcallmethod "match" .pcc_end ...? Pm