> -----Original Message-----
> From: Leopold Toetsch [mailto:[EMAIL PROTECTED]
>
> Jonathan Sillito <[EMAIL PROTECTED]> wrote:
>
> > This patch converts parrot to a continuation passing style.
>
> You seem to be changing current tests WRT invoke - does invoke still
> work as it did? Or more specifically: Do imcc tests and perl6 test still
> pass?

Not quite. In the case of sub.pmc the 'next' argument to the invoke vtable
function is ignored, instead the continuation to return to is expected to be
in P1. All of what used to be just plain 'invoke' now should be
'invokecc' -- this will do the extra setup. So in the normal cases we should
use:

    invokecc     # rather than invoke
    invoke P1    # rather than ret

All imcc tests pass if the attached tiny patch is applied. Perl6 on the
other hand I have never looked at, but I can do that next I guess ...

Oh, one other difference is that 'invoke Px' will now put the sub from Px
into P0, since this is where the callee will expect it to be. Or is this
form of the op intended for something else?

> > I am not satisfied with the time taken to make a call. I did some rough
> > benchmarking and the parrot implementation makes us slower than python
> > 2.2.1.
>
> Optimized parrot build?
>
> > $ perl assemble.pl test.pasm >test.pbc ; time ./parrot  test.pbc
>
> CGP or jit should be a lot faster.

Adding --jit does not seem to make a difference. Am I missing somthing?

> Some minor remarks:
> - the changes s/interp/interpreter/ make it harder the read the real
>   changes - and I don't see any benefit to rename variable names.

This was for consistency since everywhere else 'interpreter' seems to be
used.

> - you are undoing some PMC_data changes.

Doh!

--
Jonathan Sillito

Attachment: imcc.patch
Description: Binary data

Reply via email to