On Wednesday 07 March 2007 17:02, Matt Diephouse wrote:

> I don't think that's the right route to take. Exposing the pc to PIR-land
> code seems dangerous and I don't think there's much point. As a PIR user, I
> want the invoke vtable to behave just like any other PIR subroutine.

Agreed.

> This gets us close to what I want:
>
>
>
>     void* invoke(void *next) {
>
>         STRING *meth = CONST_STRING(interp, "__invoke");
>
>         STRING *meth_v = CONST_STRING(interp, "invoke");
>
>         PMC *sub = Parrot_find_vtable_meth(interp, pmc, meth_v);
>
>         if (PMC_IS_NULL(sub))
>
>             sub = find_or_die(interp, pmc, meth);
>
>         (void*) Parrot_run_meth_fromc_args(interp, sub,
>
>             pmc, meth, "??", next);

That probably works, with the caveat that the Parrot_run_*_fromc*() functions 
seem to have big problems with multisubs.

-- c

Reply via email to