1.1 --- a/src/Interpreter.cpp Sun Aug 12 20:51:31 2012 -0700
1.2 +++ b/src/Interpreter.cpp Sat Sep 01 16:36:20 2012 -0700
1.3 @@ -320,6 +320,10 @@
1.4
1.5 for (;;) {
1.6 Opcode op = Opcode(*top.pc);
1.7 +
1.8 + if (OpcodeInfo[op].nuses > 0)
1.9 + assert(top.sp - OpcodeInfo[op].nuses >= top.fp->stackBase());
1.10 +
1.11 switch (op) {
1.12
1.13 case OP_NOP:
1.14 @@ -737,7 +741,7 @@
1.15 case OP_SETARG:
1.16 {
1.17 unsigned slot = READ_UINT32(top.pc);
1.18 - top.fp->arg(slot) = *--top.sp;
1.19 + top.fp->arg(slot) = top.sp[-1];
1.20 break;
1.21 }
1.22
1.23 @@ -1103,6 +1107,7 @@
1.24 }
1.25
1.26 top.pc += OpcodeInfo[op].length;
1.27 + assert(top.sp >= top.fp->stackBase());
1.28 }
1.29
1.30 done: