From d6ecf7985873c4a84a0d8a154008c5531adc6435 Mon Sep 17 00:00:00 2001 From: fennecdjay Date: Mon, 31 Dec 2018 11:41:14 +0100 Subject: [PATCH] :art: SplitEmit --- src/emit/emit.c | 19 ------------------- src/emit/emitter.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 19 deletions(-) create mode 100644 src/emit/emitter.c diff --git a/src/emit/emit.c b/src/emit/emit.c index 14cffaff..7c90651c 100644 --- a/src/emit/emit.c +++ b/src/emit/emit.c @@ -88,25 +88,6 @@ ANN static m_bool emit_stmt_list(const Emitter emit, Stmt_List list); ANN static m_bool emit_exp_dot(const Emitter emit, const Exp_Dot* member); ANN static m_bool emit_func_def(const Emitter emit, const Func_Def func_def); -ANEW Emitter new_emitter(void) { - Emitter emit = (Emitter)xcalloc(1, sizeof(struct Emitter_)); - vector_init(&emit->stack); - return emit; -} - -ANN void free_emitter(Emitter a) { - vector_release(&a->stack); - xfree(a); -} - -__attribute__((returns_nonnull)) -ANN2(1) Instr emit_add_instr(const Emitter emit, const f_instr f) { - const Instr instr = mp_alloc(Instr); - instr->execute = f; - vector_add(&emit->code->instr, (vtype)instr); - return instr; -} - ANEW static Code* new_code(const Emitter emit, const m_str name) { Code* code = mp_alloc(Code); code->name = code_name_set(name, emit->env->name); diff --git a/src/emit/emitter.c b/src/emit/emitter.c new file mode 100644 index 00000000..4c46f643 --- /dev/null +++ b/src/emit/emitter.c @@ -0,0 +1,29 @@ +#include "gwion_util.h" +#include "gwion_ast.h" +#include "oo.h" +#include "vm.h" +#include "env.h" +#include "type.h" +#include "nspc.h" +#include "value.h" +#include "instr.h" +#include "emit.h" + +ANEW Emitter new_emitter(void) { + Emitter emit = (Emitter)xcalloc(1, sizeof(struct Emitter_)); + vector_init(&emit->stack); + return emit; +} + +ANN void free_emitter(Emitter a) { + vector_release(&a->stack); + xfree(a); +} + +__attribute__((returns_nonnull)) +ANN2(1) Instr emit_add_instr(const Emitter emit, const f_instr f) { + const Instr instr = mp_alloc(Instr); + instr->execute = f; + vector_add(&emit->code->instr, (vtype)instr); + return instr; +} -- 2.43.0