src/Interpreter.cpp
changeset 174 e718b56aba78
parent 172 48cffae8c9e0
child 178 9efe9a1456fd
     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: