[Python-Dev] GC head alignment issue (original) (raw)

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 PyGCHead declaration):

/* GC information is stored BEFORE the object structure */ typedef union gchead { struct { union gchead gcnext; / not NULL if object is tracked */ union gchead *gcprev; int gcrefs; }; double dummy; /* force worst-case alignment */ } PyGCHead;

[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 PyCellNew':_ _../Objects/cellobject.c:14: union has no member named gcnext' [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?