Code reduction comes from equivalent data structures.
I did not fully read your link, but let me describe my understanding - please correct me if I got something wrong:
First I though you'd suggest to use one mark/sweep function pair for different LIVE_TYPEs with the same object structure, but I'd doubt that there are many different types with the same structure. - Even tough I'm not convinced, it might be possible to group the pointers in a type together such that the structure only differs in the number of pointers at the end?
The only important things for the GC are:
So yes, I think we can reduce the number of customized mark functions. Ideally there could be one per "number of pointers". And there could be one sweep function per GC structure.
The nice side-effect would be a reduced number of memory chunks, maybe saving some memory.
To be further investigated.