Excellent. That is really exactly what I would want to see. As to moving the GC check out of the loop, doesn't that screw up the fact that it is also used for interrupt checking? Mind you, if we have a lot of non-allocating loops, then we could also store the signal received flag in a separate global so you could just load it and branch if it is non-zero. Maybe this is no faster than the limit check any way.