At 01:59 AM 1/1/2002 +0000, Nicholas Clark wrote:
>On Mon, Dec 31, 2001 at 06:19:22PM -0500, Dan Sugalski wrote:
> > At 11:10 PM 12/31/2001 +0000, Nicholas Clark wrote:
> > >But is the correct correction to swap the parameters
> > >
> > >((op_func_prederef_t)*pc_prederef) (interpreter, pc_prederef);
> > >
> > >or to change the typedef?
> >
> > The functions all take the interpreter argument second. First arg is a
> > pointer to an opcode_t, the second a pointer to the interpreter structure.
>
>I believe that the only clean way to deal with the runops_prederef array
>being of lots of C<void *>s is to make the other parts of parrot honest.
>It's not actually an array of bytecode, so this patch makes everything
>treat it as void *, not opcode_t.

Fair enough.

>So I may have done something very stupid. But all the compiler warnings go
>away. Also, please realise that I've only been looking at this code for a few
>hours so I although I think I've figured out roughly what it's doing.
>[and I did laugh out loud when I finally realised what cunning tricks it is
>doing to replace the deref function with the pointer to the opcode function,
>and return the same address so that the run loop calls the real function at
>that point]

It is rather clever, isn't it? Gregor's done some rather nifty things.

Anyway, I've applied your patch. Thanks.

                                        Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
[EMAIL PROTECTED]                         have teddy bears and even
                                      teddy bears get drunk

Reply via email to