diff -r ce072f38628c -r fb3cd08bc7fb src/Interpreter.cpp --- a/src/Interpreter.cpp Sat Dec 22 16:42:20 2012 -0800 +++ b/src/Interpreter.cpp Sat Dec 22 18:22:14 2012 -0800 @@ -446,8 +446,18 @@ } case OP_JUMP: +{ top.pc += READ_INT32(top.pc); continue; +} + +case OP_BREAK: +case OP_CONTINUE: +{ + top.fp->leaveLoop(zone); + top.pc += READ_INT32(top.pc); + continue; +} case OP_GETLOCAL: { @@ -1065,6 +1075,18 @@ break; } +case OP_ENTERLOOP: +{ + top.fp->enterLoop(zone); + break; +} + +case OP_LEAVELOOP: +{ + top.fp->leaveLoop(zone); + break; +} + default: assert(false); return false;