]> Nishi Git Mirror - gwion.git/commitdiff
:art: use pools for tl2str
authorfennecdjay <astor.jeremie@wanadoo.fr>
Sun, 23 Jun 2019 12:28:32 +0000 (14:28 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Sun, 23 Jun 2019 12:29:30 +0000 (14:29 +0200)
include/env.h
src/lib/instr.c
src/parse/check.c
src/parse/type_decl.c
util

index 6dab0b09acdcfbcf96759eda69b0c15b9375bc53..bbd16cf37978b9a99573c9df36703c2462e14675 100644 (file)
@@ -48,6 +48,7 @@ ANN Map env_label(const Env);
 ANN Nspc env_nspc(const Env);
 ANN Type scan_type(const Env, const Type, const Type_Decl*);
 ANN Type type_decl_resolve(const Env, const Type_Decl*);
+// tl2str returns a mp_alloced string
 ANEW ANN m_str tl2str(const Env, const Type_List); // in type_decl.c
 ANN m_bool compat_func(const __restrict__ Func_Def, const __restrict__ Func_Def);
 ANN Type known_type(const Env env, const Type_Decl*);
index c75b63c6635a8a2bc687d42045570f7d77b174d8..7fa2239b4095c4bf7e73542c28961801d8023ee9 100644 (file)
@@ -82,7 +82,7 @@ INSTR(GTmpl) {
       return;
     }
   }
-  xfree(tmpl_name);
+  free_mstr(emit->gwion->mp, tmpl_name);
   dt->def = f->def;
   const Func_Def def = from_base(emit->env, dt, f->value_ref->owner);
   if(!def)
index 5544e35da925a13886b293a2d1f9f6d9501d34fb..06444a7e64ea4e0c5ed7baeac5b77eb82e44fab9 100644 (file)
@@ -502,7 +502,7 @@ ANN static Func _find_template_match(const Env env, const Value v, const Exp_Cal
         break;
     }
   }
-  xfree(tmpl_name);
+  free_mstr(env->gwion->mp, tmpl_name);
   env_pop(env, scope);
   env->func = former;
   return m_func;
index 9b88f18e5415b4be098681ade0890f257bc12b7b..92dea09c6779c9a06d0dea48175239118c47f90c 100644 (file)
@@ -27,7 +27,7 @@ ANN static void td_info_run(const Env env, struct td_info* info) {
   do {
     m_str name = td2str(env, tl->td);
     text_add(&info->text, name);
-    xfree(name);// we can delete that after PoolizeStrings
+    free_mstr(env->gwion->mp, name);
     if(tl->next)
       text_add(&info->text, ",");
   } while((tl = tl->next));
@@ -48,15 +48,13 @@ ANEW ANN static m_str td2str(const Env env, const Type_Decl* td) {
     td_info_run(env, &info);
     text_add(&info.text, ">");
   }
-  const m_str str = strdup(info.text.str);
-  text_release(&info.text);
-  return str;
+  return info.text.str;
 }
 
 ANEW ANN m_str tl2str(const Env env, Type_List tl) {
   struct td_info info = { .tl=tl, { .mp=env->gwion->mp} };
   td_info_run(env, &info);
-  return strdup(info.text.str);
+  return info.text.str;
 }
 
 ANN static inline void* type_unknown(const Env env, const ID_List id) {
diff --git a/util b/util
index f3a4b121af122f2b421cc1e58c812210305e2d1c..776f7116cc6a1408870d8625b3dbbd992b214818 160000 (submodule)
--- a/util
+++ b/util
@@ -1 +1 @@
-Subproject commit f3a4b121af122f2b421cc1e58c812210305e2d1c
+Subproject commit 776f7116cc6a1408870d8625b3dbbd992b214818