At 07:40 PM 9/22/2001 +0300, Jarkko Hietaniemi wrote:
>On Sat, Sep 22, 2001 at 05:17:16PM +0100, Simon Cozens wrote:
> > On Sat, Sep 22, 2001 at 04:40:46PM +0100, Simon Cozens wrote:
> > > And now I know why! The branch-fixup section of the assembler's busted:
> >
> > No, that wasn't it. This is it:
> >
> > opcode_t *ne_nc_ic(opcode_t cur_opcode[], struct Parrot_Interp 
> *interpreter) {
> >   IV return_offset = 5;
> >   if (NUM_REG(cur_opcode[1]) != *(NV *)&cur_opcode[2]) {
> >     return cur_opcode + cur_opcode[4];
> >
> > Now, this (and similar code) assumes that
> >     sizeof(NV) == 2*sizeof(opcode_t)
>
>Baaad assumption.  In Tru64 sizeof(double) is 8, sizeof(long) (IVs are
>longs) is 8, too.  (Just to add to the confusion, Tru64 also has long
>doubles but they are only a decoy to aid compilations: they are really
>the same as doubles.)  (When long doubles are not decoys, they can be 12
>or 16 bytes long.)

And one I deeply regret. All I can say is "It seemed like a good idea at 
the time" :)

Hong's suggestion earlier is correct. We should put all non-integer 
constants into the constants section, not inline.

                                        Dan

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

Reply via email to