aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vm/runtime.c7
-rw-r--r--vm/runtime.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/vm/runtime.c b/vm/runtime.c
index 240ba6f..3279354 100644
--- a/vm/runtime.c
+++ b/vm/runtime.c
@@ -325,6 +325,13 @@ void vm_load_registers(vm_t *vm, registers_t registers)
vm->registers = registers;
}
+void vm_stop(vm_t *vm)
+{
+ free(vm->registers.data);
+ free(vm->program.instructions);
+ free(vm->stack.data);
+}
+
void vm_print_registers(vm_t *vm, FILE *fp)
{
registers_t reg = vm->registers;
diff --git a/vm/runtime.h b/vm/runtime.h
index 1226ea9..9dd639e 100644
--- a/vm/runtime.h
+++ b/vm/runtime.h
@@ -58,6 +58,7 @@ err_t vm_execute_all(vm_t *);
void vm_load_stack(vm_t *, byte *, size_t);
void vm_load_program(vm_t *, inst_t *, size_t);
void vm_load_registers(vm_t *, registers_t);
+void vm_stop(vm_t *);
// Print routines
#define VM_PRINT_PROGRAM_EXCERPT 5