Dan,

Why is there a callmeth op? Can't we just use a regular invoke as with other
subs? Or does the callmeth op do both a find and invoke as an optimization?

Jonathan Sillito

> -----Original Message-----
> From: Dan Sugalski [mailto:[EMAIL PROTECTED]
>
> Nope, not objects, but at least it's partway there. This bit is about
> making method calls.
>
> We've two issues on the front end. First, we need to be able to get a
> method PMC from an object, in those cases where we want to save that
> for later, and second we need to call methods. So, here's how we're
> going to do it.
>
> We add three ops, findmeth, callmeth and callmethcc. (The latter just
> automatically takes a continuation for the following op and stashes
> it in P2, while the former assumes one has been put in P2 already)
> They all find a method PMC based on the object and method name
> already loaded. The call ops then call
>   that PMC's invoke vtable entry, which acts as normal.
>
> So the sequence is:
>
>     P0 = P2->find_method(interpreter, P2);
>
> and for the call ops, then:
>
>     dest = P0->invoke(interpreter, P0, expr NEXT());
>     goto ADDRESS(dest);
>
> The returned method PMC handles anything fancy--multimethod dispatch
> and whatnot. We need base engine support for MMD and method caching,
> amongst other things, but we can get to that later.
>
> The method PMC returned by findmeth can be invoked as a regular
> subroutine, so we're fine there. I'm not, at the moment, leaning
> towards a separate "invoke this pre-fetched PMC sub as a method" op,
> since we're not passing on any information as to how a PMC is invoked
> outside of there being an object in P2, but I can be convinced
> otherwise if we can make a good case for languages actually using
> that information.
>
> I'm thinking at this point, since we need to add the call and callcc
> ops as it is, that we should probably have tail versions of all these
> ops, which just puts the various bits from the continuation in P1
> back before making the call, but we can talk about that later if we
> want.
> --
>                                          Dan
>
> --------------------------------------"it's like this"-------------------
> Dan Sugalski                          even samurai
> [EMAIL PROTECTED]                         have teddy bears and even
>                                        teddy bears get drunk
>

Reply via email to