On Sat, 15 Sep 2007, Allison Randal wrote:

> I just launched PDD 17 out of the drafts directory, which marks it as ready
> for implementation. Jonathan Worthington and chromatic have volunteered to
> work with me on implementing the refinements to the PMC design.

I had two questions:

1. Is the order of elements in struct PMC deliberate?

           struct PMC {
               Parrot_UInt flags;
               UnionVal cache;
               VTABLE *vtable;
               DPOINTER *data;
               struct PMC_EXT *pmc_ext;
           };

In particular, on 32-bit SPARC, sizeof(flag) will be 4, but cache will
have to be aligned on an 8-byte boundary.  Thus there will be 4 "wasted"
bytes of padding.  Swapping the order (putting cache first and flags
second) will reduce the size of a pmc by 4 bytes.  Not crucial, but
nice.

2.  Did you deliberately drop _int_val2 from UnionVal?
Specifically, the former 
    struct _i {
        INTVAL _int_val; 
        INTVAL _int_val2;
    } _i;
has been replaced by a single _int_val entry.  However, since the
UnionVal already contains 2 pointers, keeping the second _int_val2 only
costs space on systems where sizeof(INTVAL) > sizeof(void *).  Are such
platforms a significant concern?

Or were there other good reasons for dropping the entry?  I do note that
it's used heavily in the various array pmcs (including
src/pmc/resizeablebooleanarry.pmc, which I know you've worked on
relatively recently.)

-- 
    Andy Dougherty              [EMAIL PROTECTED]

Reply via email to