All in all looks good, but dynamic counts might be more useful. I'm curious by your comment that you spill oldest floats first. I would have thought that you would spill those that are next used farthest in the future. I.e., ignoring loops and branches, you know the future.