]> Nishi Git Mirror - gwion.git/commitdiff
:shirt: More clean
authorfennecdjay <astor.jeremie@wanadoo.fr>
Thu, 3 Oct 2019 01:10:00 +0000 (03:10 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Thu, 3 Oct 2019 01:10:00 +0000 (03:10 +0200)
src/lib/func.c
src/vm/vm_shred.c

index c469bc2be0ef50ab1023f620b97a8db89fe8dfa4..0d6d509ecae4f2366ecd39e0e7fd315bd12ac524 100644 (file)
@@ -150,10 +150,7 @@ ANN static Type fptr_type(const Env env, struct FptrInfo *info) {
   return type;
 }
 
-ANN2(1,3,4) m_bool check_lambda(const Env env, const Type owner,
-    Exp_Lambda *l, const Func_Def def) {
-  const m_uint scope = ((l->owner = owner)) ?
-    env_push_type(env, owner) : env->scope->depth;
+ANN static m_bool _check_lambda(const Env env, Exp_Lambda *l, const Func_Def def) {
   Arg_List base = def->base->args, arg = l->args;
   while(base && arg) {
     arg->td = base->td;
@@ -171,9 +168,16 @@ ANN2(1,3,4) m_bool check_lambda(const Env env, const Type owner,
     arg->td = NULL;
     arg = arg->next;
   }
+  return GW_OK;
+}
+ANN2(1,3,4) m_bool check_lambda(const Env env, const Type owner,
+    Exp_Lambda *l, const Func_Def def) {
+  const m_uint scope = ((l->owner = owner)) ?
+    env_push_type(env, owner) : env->scope->depth;
+  const m_bool ret = _check_lambda(env, l, def);
   if(owner)
     env_pop(env, scope);
-  return GW_OK;
+  return ret;
 }
 
 ANN static m_bool fptr_lambda(const Env env, struct FptrInfo *info) {
@@ -221,10 +225,10 @@ static OP_CHECK(opck_fptr_cast) {
 }
 
 static void member_fptr(const Emitter emit) {
-    const Instr instr = emit_add_instr(emit, RegPop);
-    instr->m_val = SZ_INT;
-    const Instr dup = emit_add_instr(emit, Reg2Reg);
-    dup->m_val = -SZ_INT;
+  const Instr instr = emit_add_instr(emit, RegPop);
+  instr->m_val = SZ_INT;
+  const Instr dup = emit_add_instr(emit, Reg2Reg);
+  dup->m_val = -SZ_INT;
 }
 
 static OP_EMIT(opem_fptr_cast) {
@@ -264,7 +268,7 @@ static OP_CHECK(opck_spork) {
     ERR_O(exp_self(unary)->pos, _("spork/fork must not have next expression"))
   if(unary->exp && unary->exp->exp_type == ae_exp_call)
     return env->gwion->type[unary->op == insert_symbol("spork") ? et_shred : et_fork];
-  else if(unary->code) {
+  if(unary->code) {
     ++env->scope->depth;
     nspc_push_value(env->gwion->mp, env->curr);
     const m_bool ret = check_stmt(env, unary->code);
@@ -272,9 +276,8 @@ static OP_CHECK(opck_spork) {
     --env->scope->depth;
     CHECK_BO(ret)
     return env->gwion->type[unary->op == insert_symbol("spork") ? et_shred : et_fork];
-  } else
-    ERR_O(exp_self(unary)->pos, _("only function calls can be sporked..."))
-  return NULL;
+  }
+  ERR_O(exp_self(unary)->pos, _("only function calls can be sporked..."))
 }
 
 static OP_EMIT(opem_spork) {
index c755ab8aa7a20bd733ab8ea71441a85185fb3eb6..e81944fd3362b1de8f7bf59e0cacf352beedebcd 100644 (file)
@@ -30,13 +30,13 @@ static inline void free_shredinfo(MemPool mp, struct ShredInfo_ *info) {
       xfree((void*)vector_at(v, i - 1));
     free_vector(mp, v);
   }
-  mp_free(mp, ShredInfo, info); // ??? info->p
+  mp_free(mp, ShredInfo, info);
 }
 
 VM_Shred new_vm_shred(MemPool p, VM_Code c) {
   const VM_Shred shred = mp_calloc(p, Stack);
-  shred->code          = c;
-  shred->reg           = (m_bit*)shred + sizeof(struct VM_Shred_);
+  shred->code = c;
+  shred->reg  = (m_bit*)shred + sizeof(struct VM_Shred_);
   shred->base = shred->mem = shred->reg + SIZEOF_REG;
   shred->info = new_shredinfo(p, c->name);
   shred->info->orig = c;
@@ -49,7 +49,7 @@ void free_vm_shred(VM_Shred shred) {
     release((M_Object)vector_at(&shred->gc, i - 1), shred);
   vector_release(&shred->gc);
   REM_REF(shred->info->orig, shred->info->vm->gwion);
-  MemPool mp = shred->info->mp;
+  const MemPool mp = shred->info->mp;
   mp_free(mp, ShredTick, shred->tick);
   free_shredinfo(mp, shred->info);
   mp_free(mp, Stack, shred);