We have indeed gone through this before. The last time the dominant argument was that these types of mark/unmark operations can be mis-used just as readily as malloc/free, because the programmer has to know when and where to call them. I'm just repeating this for everyone's benefit, not giving an opinion.
Another approach to to register the address of the "PMC *" variables instead of registering the pointers themselves. This way you let the collector know where the automatic variables that may hold PMC pointers are and before that function returns a single call is made to unregister all of those variables. This makes for simple programming rules, but makes for more overhead everwhere it is used. This is one way of achieving "accurate garbage collection" without compiler support. Using register and stack walking means the garbage collector must be conservative in considering data unreachable, as random bytes on the stack or in registers that look like valid PMC pointers must be treated as such. A single such value can cause the collector to retain an unbounded amount of data that is genuinely unreachable (and possibly delaying destruction). This is the main problem with "conservative garbage collection". The additional CPU overhead now shows up when the collector runs because it has to do more work to decide what is a PMC pointer and what is not. I personally prefer the accurate collector approach for parrot, because it makes for more predictable performance with zero platform dependent code. Sun moved to an accurate collector in their production JVM when they introducted HotSpot. In any case, I've sent about 2 iterations of a patch to handle SPARC register windows. To deal with IA-64 and that one platform with non-contiguous stack frames, we would have to refactor the trace_system_stack function to trace contiguous chunks of memory. The platform dependent code for IA-64 et al will want something like this. BTW... IA-64 seems like such a non-starter of platform, that some might argue it's not worth making it a core platform for parrot at this time. -- Jason