Ok, I'm knee-deep in packfile.c looking at alignment issues, and have a
two questions about storing FLOATVALs in the CONSTANTS section of the
bytecode: [First, thanks to Gregor Purdy for the self-documenting
packfile.c and the nice companion docs/parrotbyte.pod.]

In docs/parrotbyte.pod, under CONSTANTS, it says

    For number constants (S is constant, and is equal to C<sizeof(FLOATVAL)>):

      +----------+----------+----------+----------+
      |                                           |
      |             S' bytes of Data              |
      |                                           |
      +----------+----------+----------+----------+

    where

      S' = S + (S % 4) ? (4 - (S % 4)) : 0

    If S' E<gt> S, then the extra bytes are filled with zeros.

First, may I assume that '4' is supposed to be sizeof(opcode_t), not a plain
4?.

Second, this claims that FLOATVALS are supposed to be padded out to an
opcode_t boundary, but currently, in packfile.c, they are not.  One place
where this is an issue is gcc/x86, where sizeof(long long) = 8, but
sizeof(long double) = 12, so that FLOATVALS aren't automatically padded 
out to an opcode_t boundary.

Are they supposed to be padded?

-- 
    Andy Dougherty              [EMAIL PROTECTED]

Reply via email to