> -----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
imcc.patch
Description: Binary data