Hello, I've spent last two months at Google quietly working on the boehm-gc branch from my last year's SoC project - http://gcc.gnu.org/wiki/Garbage_collection_tuning . To recap, I've integrated Boehm's GC into GCC proper, adjusted gengtype and GGC support files to generate typed GC allocators for every GTY type, and added type tag to every GC allocated object.
However, as I was trying to make Boehm's GC use exact type layout information, I was running into increasingly difficult issues with every type converted. So then I stopped and scavenged the branch for immediately useful stuff, almost all of which I have submitted to the mainline by now. So my question is, what do you want to see done next? It seems that continuing working with Boehm's GC will be not that productive. I'm thinking about bringing over to the mainline the typed GC allocator infrastructure, so that every ggc_alloc becomes, e.g. ggc_alloc_rtx_def, ggc_alloc_cleared_tree_node and so on for every GTY'ed type. In the first step they would be simple wrappers around ggc_alloc - I would not add the type tag byte to the allocated objects and that would wait until explicit marker stack, the first user of them. Immediate benefits of this change would be somewhat better type safety and protection from GC misuses with non-GTY types (use pool or obstack instead). Alternatives are bringing over type tag overhead to the mainline as well, or starting working on explicit marker stack on the top of ggc-page. Any comments? -- Laurynas