diff options
Diffstat (limited to 'src/bytecode/vm.h')
-rwxr-xr-x | src/bytecode/vm.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/bytecode/vm.h b/src/bytecode/vm.h index 51a6f44..b24a5fa 100755 --- a/src/bytecode/vm.h +++ b/src/bytecode/vm.h | |||
@@ -196,6 +196,16 @@ vm_interpret(VM *vm, Chunk *chunk) { | |||
196 | case OP_GREATER: { FIXNUM_COMPARE_OP(>); } break; | 196 | case OP_GREATER: { FIXNUM_COMPARE_OP(>); } break; |
197 | case OP_LESS_EQUAL: { FIXNUM_COMPARE_OP(<=); } break; | 197 | case OP_LESS_EQUAL: { FIXNUM_COMPARE_OP(<=); } break; |
198 | case OP_GREATER_EQUAL: { FIXNUM_COMPARE_OP(>=); } break; | 198 | case OP_GREATER_EQUAL: { FIXNUM_COMPARE_OP(>=); } break; |
199 | case OP_JUMP: { | ||
200 | ssize_t off = AS_FIXNUM(array_pop(vm->stack)); | ||
201 | vm->pc += off; | ||
202 | } break; | ||
203 | case OP_JUMP_IF_FALSE: { | ||
204 | ssize_t off = AS_FIXNUM(array_pop(vm->stack)); | ||
205 | if (IS_FALSE(array_pop(vm->stack))) { | ||
206 | vm->pc += off; | ||
207 | } | ||
208 | } break; | ||
199 | case OP_DISPLAY: { | 209 | case OP_DISPLAY: { |
200 | display(array_pop(vm->stack)); | 210 | display(array_pop(vm->stack)); |
201 | } break; | 211 | } break; |