[Parrot] #549: Kill UnionVal

Andy Dougherty doughera at lafayette.edu
Wed Jul 29 19:58:40 UTC 2009

On Wed, 29 Jul 2009, Andrew Whitworth wrote:

> On Wed, Jul 29, 2009 at 1:14 PM, Andrew Dougherty<doughera at lafayette.edu> wrote:
> > Could someone remind me *why* we should "Kill UnionVal" ?  I've reviewed
> > the #parrot link referenced in TT #549, pdd17, and the old RT #48014, but
> > I still don't understand what "problem" this ticket is trying to solve.
> Several problems, in fact, although many of them are specific to PMCs
> and not to all PObjs.
> 1) Most PObjs, PMCs included, only use part of the UnionVal structure,
> making the rest of it a waste of memory space.
> 2) PMC data is not stored in the UnionVal because that creates a huge
> problem with subclassing PMCs, including PMCs written in C and PIR.
> All data from PMCs now is stored in attribute structures and UnionVals
> are completely unused and is a complete waste of space.
> At the very least we would like to apply this patch or something like
> it to get UnionVals out of the PMC structure completely to save space.

Except that this patch doesn't save any space at all on most 
architectures.  I understand and support the idea of saving space.  It's 
just not relevant for this patch.

> The GC does use the UnionVal now (or, at least, the space where the
> UnionVal is) to hold pointers to keep the PMCs on the free list. With
> some work we could avoid that and hold free list pointers in other
> fields.

But why wouldn't those fields take up just as much space as they do now? 
Again, I'm not seeing the space savings.

> Other PObj-like structures, (List_Chunks, STRINGs, etc) can be
> modified to not use UnionVal because it's not necessary and specific
> pointers can be added to those structures for their particular needs.

That sounds like a good idea, but there is a more basic question:

What should those structures look like, ideally?  Would we end up 
effectively just adding in those fields again?

I'll note that 3 months ago, on TT #549, I posted the same question:

   A good starting question might be: "What, exactly, are those structures 
   supposed to look like after this?" 

Before starting, it might be useful to have a sense of which way to go.

    Andy Dougherty		doughera at lafayette.edu

More information about the parrot-dev mailing list