diff options
author | Bad Diode <bd@badd10de.dev> | 2024-07-05 16:50:41 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2024-07-05 16:50:41 +0200 |
commit | 9d548e7dd018d8f365d788f9a716ee6c04592c9d (patch) | |
tree | a6435e40974c23121816d2d02537db10189bb2d9 /src/vm.c | |
parent | f67c4050a21d0d7ec2c5936ca5ea87fd48872be7 (diff) | |
download | bdl-main.tar.gz bdl-main.zip |
Diffstat (limited to 'src/vm.c')
-rw-r--r-- | src/vm.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -5,7 +5,7 @@ | |||
5 | #include "compiler.c" | 5 | #include "compiler.c" |
6 | 6 | ||
7 | #define N_CONST 256 | 7 | #define N_CONST 256 |
8 | #define STACK_SIZE KB(64) | 8 | #define STACK_SIZE MB(4) |
9 | typedef struct VM { | 9 | typedef struct VM { |
10 | Chunk *main; | 10 | Chunk *main; |
11 | Chunk *chunk; | 11 | Chunk *chunk; |
@@ -382,6 +382,9 @@ vm_run(VM *vm) { | |||
382 | p[3] = old_fp; | 382 | p[3] = old_fp; |
383 | vm->sp += sizeof(ptrsize) * 4; | 383 | vm->sp += sizeof(ptrsize) * 4; |
384 | } break; | 384 | } break; |
385 | case OP_RECUR: { | ||
386 | vm->ip = vm->chunk->code; | ||
387 | } break; | ||
385 | case OP_RET: { | 388 | case OP_RET: { |
386 | u64 *p = (u64 *)vm->sp; | 389 | u64 *p = (u64 *)vm->sp; |
387 | ptrsize chunk_addr = p[-4]; | 390 | ptrsize chunk_addr = p[-4]; |