Leo~

On 8/10/05, Leopold Toetsch <[EMAIL PROTECTED]> wrote:
> [ /me warnock fighting - and update below for method calls ]
> 
> -------- Original Message --------
> Subject: call opcodes cleanup
> Date: Thu, 21 Jul 2005 09:52:07 +0200
> From: Leopold Toetsch <[EMAIL PROTECTED]>
> To: Perl 6 Internals <perl6-internals@perl.org>
> 
> 
> There are still some leftovers of the old calling scheme, which I'd like
> to get rid of (1,2) or change slightly (3):
> 
> 1) bare invoke
> 
> This opcode assumes P0 = Sub, P1 = Continuation
> 
> 2) bare invokecc
> 
> This opcode assumes P0 = Sub
> 
> 3) invoke Px
> 
> This opcode assumes P1 = Continuation, but it has a double usage: call a
> coroutine (not the first time) and yield from a coroutine with this code
> sequence:
> 
>    interpinfo Px, .INTERPINFO_CURRENT_SUB
>    invoke Px
> 
> Instead I'd like to have distinct opcodes, that carry the effects on
> operands clearly in their signature. The replacement for above would be:
> 
> 1) invoke PSub, PCont   # call sub with given continuation
> 2) invokecc PSub        # call sub, create continuation - exists
> 3a) invoke PCoro        # call sub, leave continuation as is
> 3b) yield               # yield results from a coroutine
> 
> 3a) exists too, but it currently picks up a continuation in P1.
> 
> Rational: the register allocator has to track the usage of all symbols.
> For all the implicit register usage, extra code is needed that tracks
> register usage. See trunk imcc/cfg.c for details.

I like this, especially the motivation.

> -------------
> 
> Method call opcodes
> 
> We currently have these opcodes:
> 
> 4a) callmethod
> 
> Implicit registers used: S0 = method, P1 = continuation, P2 =
> invocant/object
> 
> 4b) callmethod Smeth
> 
> 5a) callmethodcc
> 5b) callmethodcc Smeth
> 
> We probably need just one opcode:
> 
> 5) callmethodcc Pinvocant, Smeth
> (maybe callmethod Pinvocant, Smeth, Pcont)

I think that we should have the second option (as that is an easy way
to have tailmethods).  We might also want a C< callmethod Pinvocant,
Pmeth, Pcont > if we allow methods that are pmcs.  (This might allow
hoisting the string lookup outside a loop or something).

Matt
-- 
"Computer Science is merely the post-Turing Decline of Formal Systems Theory."
-Stan Kelly-Bootle, The Devil's DP Dictionary

Reply via email to