One problem with this approach was that the mechanism to count the bytecodes slowed down the bytecode dispatch considerably--by a factor of two, as I recall! A better approach might be to use a timer interrupt to tell the VM when to return control to the browser.
Do you have any thoughts on how to handle this problem?
You could count preemption points instead... I.E. in
Interpreter >># checkForInterrupts