I spent some time yesterday working out a basic structure for my "Parrot_gc_it_run" function, the function that performs a GC run. There are a lot of questions still up in the air, and I ended up writing more comments with questions and propositions then I spent writing actual code. Such is life when you're starting a new software project, and I would rather ask a lot of questions then to do everything wrong.
I'm still grappling with the structure of my lists and data structures. I've got a few operations that could become either functions or macros (or inline functions!) as time goes on. I'm also trying to figure out when, where, and how, I can break from a run when I only want to perform a small increment. At the moment, I'm relying on an undefined macro "NEED_TA_DO_DA_BREAK" to make this happen. The devil is always in the details, and this macro is going to require major changes (and eventually a better name) as time goes on.
I've got to lay a little bit of subfloor in a few other places still. I'll post updates as I go.