[Python-Dev] GC head alignment issue

Tim Peters tim.one@home.com
Thu, 11 Oct 2001 13:49:55 -0400


[Tim]
> My head hurts, so I'm not sure this is strictly legit C
> (drop-in replacement for the current PyGC_Head declaration):
>
> /* GC information is stored BEFORE the object structure */
> typedef union _gc_head {
> 	struct {
> 		union _gc_head *gc_next; /* not NULL if object is tracked */
> 		union _gc_head *gc_prev;
> 		int gc_refs;
> 	};
> 	double dummy;  /* force worst-case alignment */
> } PyGC_Head;

[Guido]
> Alas, gcc gives me warnings about this:
>
> ../Include/objimpl.h:274: warning: unnamed struct/union that
> defines no instances
>
> and references to the fields fail with errors:
>
> ../Objects/cellobject.c: In function `PyCell_New':
> ../Objects/cellobject.c:14: union has no member named `gc_next'
> [and many more]

Then:

    If that's not legit, we could make it legit by naming the struct
    member and interpolating the name into all existing references.

This is straightforward, if a bit tedious ... OK, I did that.  Requires
changes to the track and untrack macros, plus a ton of edits inside
gcmodule.c.  But that's it, and they're all straightforward changes (i.e.,
low chance of breakage).  Should I check it in?