Nicholas Clark wrote:
Is the PMC layout likely to remain stable? There's been talk of minimal PMC heads (data, vtable) in relation to the generational garbage collector proposals. Is this likely to happen? Related to this there has been talk of variable sized bodies.
I'd like to have a small head and variable sized bodies. Now we have a rigid structure (or rather two: PMC, PMC_EXT), and the variable part e.g. object attributes hangs off another structure in pmc->pmc_ext->data. This is not only suboptimal from data locality or access time POV, it's more a serious restriction, how you lay out your PMC data.
WRT generational GC: yes such a PMC layout is very likely needed to be able to partition your existing PMCs into generations. src/gc_gms.c tries a different approach and needs 4 extra pointers per PMC.
If there are changes, how much of the existing API will still work? Will code using the macros in parrot/pobj.h need much changing?
I don't expect much changes, because these macros exist and and used. PMCs can be switched one by one (mostly) to use a new data layout, but that again schould be transparent, if you use VTABLE_foo.
Nicholas Clark
leo