diff options
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]; |