Matt Fowles <[EMAIL PROTECTED]> wrote: > Leo~
> On Tue, 18 Jan 2005 16:52:52 +0100, Leopold Toetsch <[EMAIL PROTECTED]> wrote: >> That was C<vtable->dispatch> in the proposal. C<find_method> is just >> called to query one object or class, if it can do the method. Finding >> the final (MMD) function is done separately with a distinct vtable >> method (and probably implemented inside some meta class PMC). > That makes sense. If the vtable->dispatch method is attatched to some > PMC, what provides that PMC? That PMC is the metaclass PMC of the class system. For standard Parrot objects that's mostly default.pmc or parrotclass.pmc and/or an implementation in src/objects.c. > ... Is it the MMD function being called > (what I would suggest), some environmental one, or something else? Given a P6 function call (which can be MMD or not): foo($a, $b, $c) If nothing is kwnown about "foo", this would be basically: func = a.dispatch("foo") # VTABLE_dispatch(interp, a, "foo") invokecc func That ends up in default.pmc's implementation normally, which calls C<find_method> repeatedly according to C<vtable->mro> and the algorithm described in "MMD and VTABLE_find_method". > Matt leo