How sweet it is that after a couple of days of debugging, it only took two lines of code to get Parrot's entire test suite passing while not using more than 30 MB per process. This is a debugging build of Parrot, too--so it uses more memory than it needs to.
Suddenly I feel much better about C than I did before, having optimized several classes of infinite loops in one go.