]> Nishi Git Mirror - gwion.git/commitdiff
:art: small fixes
authorJérémie Astor <fennecdjay@gmail.com>
Mon, 6 Sep 2021 23:55:15 +0000 (01:55 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Mon, 6 Sep 2021 23:55:15 +0000 (01:55 +0200)
src/emit/emit.c
src/lib/array.c
src/parse/check.c

index 18d55e6bee10263fe39abc137cf2514a74e28cd8..5d41d5c17a87b622f895d350e4b2547b4b413be8 100644 (file)
@@ -1560,10 +1560,10 @@ ANN m_bool emit_exp_call1(const Emitter emit, const Func f,
       instr->m_val      = (m_uint)f;
     } else {
       const Instr back = (Instr)vector_back(&emit->code->instr);
-        if(back->execute != SetFunc) {
-          const Instr instr = emit_add_instr(emit, SetFunc);
-          instr->m_val      = (m_uint)f;
-        }
+      if(back->execute != SetFunc) {
+        const Instr instr = emit_add_instr(emit, SetFunc);
+        instr->m_val      = (m_uint)f;
+      }
     }
   }
   const m_uint offset = emit_code_offset(emit);
index 954a9db520488260f69a89177a5c725ccd8a9b5b..fa41f106ba10ebe0feca727a0c3ee4d93d844f8a 100644 (file)
@@ -17,7 +17,6 @@
 static DTOR(array_dtor) {
   if (*(void **)(o->data + SZ_INT)) xfree(*(void **)(o->data + SZ_INT));
   struct M_Vector_ *a = ARRAY(o);
-//  free_m_vector(shred->info->mp, a);
   m_vector_release(a);
 }
 
@@ -321,26 +320,23 @@ ANN static void array_loop(const Emitter emit, const m_uint depth) {
   access->m_val        = depth * SZ_INT;
 }
 
-ANN static void array_finish(const Emitter emit, const m_uint depth,
-                             const Type t, const m_bool is_var) {
+ANN static void array_finish(const Emitter emit, const Array_Sub array, const m_bool is_var) {
   const Instr get = emit_add_instr(emit, is_var ? ArrayAddr : ArrayGet);
-  if(!is_var && isa(t, emit->gwion->type[et_object]) > 0) {
-    const m_uint _depth = get_depth(t);
-    if(_depth < depth || isa(array_base(t), emit->gwion->type[et_object]) > 0)
+  const Type t = array->type;
+  if(!is_var) {
+    if(array->depth < get_depth(t) || isa(array_base(t), emit->gwion->type[et_object]) > 0)
       emit_add_instr(emit, GWOP_EXCEPT);
   }
-  get->m_val      = depth * SZ_INT;
-  //  emit_add_instr(emit, ArrayValid);
+  get->m_val      = array->depth * SZ_INT;
   const Instr push = emit_add_instr(emit, RegMove);
   push->m_val      = is_var ? SZ_INT : t->size;
 }
 
 ANN static inline m_bool array_do(const Emitter emit, const Array_Sub array,
                                   const m_bool is_var) {
-  //  emit_gc(emit, -SZ_INT);
   CHECK_BB(emit_exp(emit, array->exp));
   array_loop(emit, array->depth);
-  array_finish(emit, array->depth, array->type, is_var);
+  array_finish(emit, array, is_var);
   return GW_OK;
 }
 
index 6a281cf66fc358ecbe160594f3b6820c87db19fc..51dbad9e863ece71d5f09f0d1a6ef0aeeaa954f2 100644 (file)
@@ -1726,7 +1726,7 @@ ANN m_bool check_abstract(const Env env, const Class_Def cdef) {
   if (!cdef->base.type->nspc->vtable.ptr) return GW_OK;
   bool err = false;
   for (m_uint i = 0; i < vector_size(&cdef->base.type->nspc->vtable); ++i) {
-    Func f = (Func)vector_at(&cdef->base.type->nspc->vtable, i);
+    const Func f = (Func)vector_at(&cdef->base.type->nspc->vtable, i);
     if (f && GET_FLAG(f->def->base, abstract)) {
       if (!err) {
         err = true;