From 7264715260fe0235413b6bd0cf6ee339e3328dc2 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Thu, 28 Oct 2021 12:26:14 +0200 Subject: Add OP_SET_CAPTURED operation --- src/bytecode/vm.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/bytecode/vm.h') diff --git a/src/bytecode/vm.h b/src/bytecode/vm.h index f1c525d..4ff9743 100755 --- a/src/bytecode/vm.h +++ b/src/bytecode/vm.h @@ -191,12 +191,17 @@ vm_interpret(VM *vm) { case OP_CAPTURE_LOCAL: { Object proc = array_pop(vm->stack); ssize_t n_captured = AS_FIXNUM(array_pop(vm->stack)); - for (size_t i = 0; i < n_captured; i++) { + for (ssize_t i = 0; i < n_captured; i++) { Object value = array_pop(vm->stack); array_push(proc.closure->values, value); } array_push(vm->stack, proc); } break; + case OP_SET_CAPTURED: { + Object value = array_pop(vm->stack); + ssize_t idx = AS_FIXNUM(array_pop(vm->stack)); + frame->closure->values[idx] = value; + } break; case OP_DEF_LOCAL: { Object value = array_pop(vm->stack); ssize_t idx = AS_FIXNUM(array_pop(vm->stack)); -- cgit v1.2.1