]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve code->instr
authorfennecdjay <fennecdjay@gmail.com>
Wed, 26 Oct 2022 11:49:49 +0000 (13:49 +0200)
committerfennecdjay <fennecdjay@gmail.com>
Wed, 26 Oct 2022 11:49:49 +0000 (13:49 +0200)
src/emit/emit.c
src/vm/vm_code.c

index 41b55be48421993ea9a8726935212bc58dfb25cd..f213a2b63a9f2ae0e03ef43436a018a7e2ee7efe 100644 (file)
@@ -245,7 +245,7 @@ ANEW static Code *new_code(const Emitter emit, const m_str name) {
 }
 
 ANN static void free_code(MemPool p, Code *code) {
-  vector_release(&code->instr);
+  if(code->instr.ptr) vector_release(&code->instr);
   vector_release(&code->stack_break);
   vector_release(&code->stack_cont);
   vector_release(&code->stack_return);
index e8602b8c333694d97320eef016f780d974426230..c619f1b2cd642accf57b1a1b68c3a848592cfba5 100644 (file)
@@ -182,8 +182,8 @@ VM_Code new_vmcode(MemPool p, const Vector instr, const M_Vector live_values,
   VM_Code code = mp_calloc(p, VM_Code);
   code->name   = mstrdup(p, name);
   if (instr) {
-    vector_init(&code->instr);
-    vector_copy2(instr, &code->instr);
+    code->instr.ptr = instr->ptr;
+    instr->ptr = NULL;
     code->bytecode = tobytecode(p, code);
   }
   if (live_values) code->live_values.ptr = live_values->ptr;