]> Nishi Git Mirror - gwion.git/commitdiff
:bug: Fix array bug
authorJérémie Astor <fennecdjay@gmail.com>
Mon, 15 Mar 2021 18:18:45 +0000 (19:18 +0100)
committerJérémie Astor <fennecdjay@gmail.com>
Mon, 15 Mar 2021 18:18:45 +0000 (19:18 +0100)
plug
src/emit/emit.c
src/vm/vm_code.c

diff --git a/plug b/plug
index 2d8a48494371a6a11514647800225c531bff6b86..ea2bba4277586e094d2083bcca456a823e67c466 160000 (submodule)
--- a/plug
+++ b/plug
@@ -1 +1 @@
-Subproject commit 2d8a48494371a6a11514647800225c531bff6b86
+Subproject commit ea2bba4277586e094d2083bcca456a823e67c466
index 10f78c688a53b74e769f61eeffb27d11bcce1dc3..b03152b5e5d03805933ec2bb67f9388337b0775f 100644 (file)
@@ -282,7 +282,6 @@ ANN static void struct_expand(const Emitter emit, const Type t) {
   const Instr instr = emit_add_instr(emit, Reg2RegDeref);
   instr->m_val = -SZ_INT;
   instr->m_val2 = t->size;
-//  regpush(emit, t->size - SZ_INT);
 }
 
 
@@ -302,7 +301,7 @@ ANN static void emit_pre_constructor_array(const Emitter emit, const Type type)
   regpop(emit, SZ_INT);
   const Instr pc = emit_add_instr(emit, Goto);
   pc->m_val = start_index;
-  top->m_val = emit_code_size(emit) - !!emit->env->func;
+  top->m_val = emit_code_size(emit);
   regpop(emit, SZ_INT*3);
   emit_add_instr(emit, ArrayPost);
 }
index 3c1194c2a880a3a3a0370d425971ef269a5e4fcc..c1d7e0134ca5b3837b9db94f7279b2490e26e82b 100644 (file)
@@ -37,7 +37,7 @@ ANN void free_vmcode(VM_Code a, Gwion gwion) {
 }
 
 static inline uint isgoto(const unsigned opcode) {
-  return opcode == eGoto ||
+  return opcode == eGoto || opcode == eArrayTop ||
       opcode == eBranchEqInt || opcode == eBranchNeqInt ||
       opcode == eBranchEqFloat || opcode == eBranchNeqFloat;
 }