Re: [perl #41733] invoke :vtable - execution stops

2007-03-09 Thread Alek Storm
Following conversation with Matt Diephouse on #parrot, I realized that that was pretty confusing. What I meant was that invoke() should accept parameters and return values as a normal subroutine. This would probably be done by moving the code that deals with the pc out of the invoke() method and

Re: [perl #41733] invoke :vtable - execution stops

2007-03-09 Thread Alek Storm
That is definitely the most elegant solution. Now, the question is, shouldn't the invoke() vtable method behave that way in the first place, since passing a pc address to and returning another pc address from the invoke() method only makes sense for Sub, Coroutine, and Continuation? In other

Re: [perl #41733] invoke :vtable - execution stops

2007-03-07 Thread chromatic
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

Re: [perl #41733] invoke :vtable - execution stops

2007-03-07 Thread Matt Diephouse
Alek Storm <[EMAIL PROTECTED]> wrote: The invoke vtable method is supposed to take one argument - the address of the opcode immediately following the invokecc opcode, so we can return to it later. It then returns the address of the subroutine to jump into. The problem is that, in C, the invoke

Re: [perl #41733] invoke :vtable - execution stops

2007-03-07 Thread Alek Storm
The invoke vtable method is supposed to take one argument - the address of the opcode immediately following the invokecc opcode, so we can return to it later. It then returns the address of the subroutine to jump into. The problem is that, in C, the invoke method takes and returns an opcode_t*,