I've just committed the 3rd revision of the Parrot intermediate compiler. Angel Faus has added register spilling to work with the graph-coloring allocator. Currently we spill regs to an array in P31. Given that we don't have random access stacks, this is the only fast way to do this.
Much thanks to Angel; anyone who has written a register allocator knows the spiller is the ugliest part to get right, and he stepped in just when I was getting swamped at work. I do not like the fact that we have to use keyed access at a low level to accomplish this, so I hope we consider adding random access to stacks. If you haven't looked at IMCC, we've written a complete register allocator that you can map symbolic variables to. This means that anyone that wishes to write a compiler for Parrot can just emit code for IMCC and let it handle the dirty work of VM register allocation, spillage, peephole optimization, constant expression evaluation, etc. -Melvin