]> Nishi Git Mirror - gwion.git/commitdiff
:art: SplitEmit
authorfennecdjay <astor.jeremie@wanadoo.fr>
Mon, 31 Dec 2018 10:41:14 +0000 (11:41 +0100)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Mon, 31 Dec 2018 10:41:14 +0000 (11:41 +0100)
src/emit/emit.c
src/emit/emitter.c [new file with mode: 0644]

index 14cffafffb0a048c6ce53e6606e3e13c7be58ca5..7c90651c990f1e78a4702972d417a49e5b3d0bd2 100644 (file)
@@ -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 (file)
index 0000000..4c46f64
--- /dev/null
@@ -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;
+}