aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode/vm.h
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-24 17:08:28 +0200
committerBad Diode <bd@badd10de.dev>2021-10-24 17:08:28 +0200
commit6bfe706027f7ec83ace3b0b68de363114b68de08 (patch)
treef9e6a6ae090a1097b7c191e5d840cd0e8dab2c82 /src/bytecode/vm.h
parentabdcae0f839d0bd772c5f7211cb1cb2034355b62 (diff)
downloadbdl-6bfe706027f7ec83ace3b0b68de363114b68de08.tar.gz
bdl-6bfe706027f7ec83ace3b0b68de363114b68de08.zip
Allow our jumps to be positive or negative
Diffstat (limited to 'src/bytecode/vm.h')
-rwxr-xr-xsrc/bytecode/vm.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/bytecode/vm.h b/src/bytecode/vm.h
index ba33077..96e36de 100755
--- a/src/bytecode/vm.h
+++ b/src/bytecode/vm.h
@@ -199,13 +199,13 @@ vm_interpret(VM *vm, Chunk *chunk) {
199 case OP_JUMP: { 199 case OP_JUMP: {
200 u16 a = *vm->pc++; 200 u16 a = *vm->pc++;
201 u16 b = *vm->pc++; 201 u16 b = *vm->pc++;
202 u16 offset = (a << 8) | b; 202 s16 offset = (a << 8) | b;
203 vm->pc += offset; 203 vm->pc += offset;
204 } break; 204 } break;
205 case OP_JUMP_IF_FALSE: { 205 case OP_JUMP_IF_FALSE: {
206 u16 a = *vm->pc++; 206 u16 a = *vm->pc++;
207 u16 b = *vm->pc++; 207 u16 b = *vm->pc++;
208 u16 offset = (a << 8) | b; 208 s16 offset = (a << 8) | b;
209 if (IS_FALSE(array_pop(vm->stack))) { 209 if (IS_FALSE(array_pop(vm->stack))) {
210 vm->pc += offset; 210 vm->pc += offset;
211 } 211 }