]> Nishi Git Mirror - gwion.git/commitdiff
:art: Simplify Shred -> mp access
authorJérémie Astor <fennecdjay@gmail.com>
Thu, 13 May 2021 13:42:36 +0000 (15:42 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Thu, 13 May 2021 13:42:36 +0000 (15:42 +0200)
13 files changed:
include/gack.h
plug
src/emit/emit.c
src/emit/memoize.c
src/lib/array.c
src/lib/modules.c
src/lib/prim.c
src/lib/string.c
src/lib/ugen.c
src/lib/union.c
src/lib/vararg.c
src/vm/vm_code.c
src/vm/vm_name.c

index 106a0edcdff708ed285bd483420da0cf77cff636..f7c901a69896dcd514119e615aab8058e85131d2 100644 (file)
@@ -4,7 +4,7 @@ ANN void gack(const VM_Shred, const m_uint);
 
 #define INTERP_PRINTF(fmt, ...) { \
   m_str ret = *(m_str*)(VALUE - SZ_INT);\
-  gw_asprintf(shred->info->vm->gwion->mp, &ret, fmt, ##__VA_ARGS__); \
+  gw_asprintf(shred->info->mp, &ret, fmt, ##__VA_ARGS__); \
   *(m_str*)(VALUE - SZ_INT) = ret;\
 }
 
diff --git a/plug b/plug
index b932136274811c52694dc7f2d3c9de0832e6b64b..62ce17641d575fb1c0a16194234be257b4a6b85f 160000 (submodule)
--- a/plug
+++ b/plug
@@ -1 +1 @@
-Subproject commit b932136274811c52694dc7f2d3c9de0832e6b64b
+Subproject commit 62ce17641d575fb1c0a16194234be257b4a6b85f
index 9791df9a70dfd49dc035c624921866171eb9e1d1..29901afa32cfa2d2bacf5be740658c18adbdabde 100644 (file)
@@ -816,9 +816,10 @@ ANN static m_bool emit_exp_decl_non_static(const Emitter emit, const Exp_Decl *d
   if(is_obj && (is_array || !is_ref))
     CHECK_BB(emit_instantiate_decl(emit, type, decl->td, array, is_ref));
   f_instr *exec = (f_instr*)allocmember;
+  if(!emit->env->scope->depth)
+    emit_debug(emit, v);
   if(!vflag(v, vflag_member)) {
     v->from->offset = emit_local(emit, type);
-    emit_debug(emit, v);
     exec = (f_instr*)(allocword);
     if(GET_FLAG(v, late)) { // ref or emit_var ?
       const Instr clean = emit_add_instr(emit, MemSetImm);
@@ -1301,10 +1302,10 @@ ANN static m_bool scoped_stmt(const Emitter emit, const Stmt stmt, const m_bool
   return ret;
 }
 
-#define SPORK_FUNC_PREFIX "spork~func:%i"
-#define FORK_FUNC_PREFIX "fork~func:%i"
-#define SPORK_CODE_PREFIX "spork~code:%i"
-#define FORK_CODE_PREFIX  "fork~code:%i"
+#define SPORK_FUNC_PREFIX "spork~func:%u"
+#define FORK_FUNC_PREFIX "fork~func:%u"
+#define SPORK_CODE_PREFIX "spork~code:%u"
+#define FORK_CODE_PREFIX  "fork~code:%u"
 
 static void push_spork_code(const Emitter emit, const m_str prefix, const loc_t pos) {
   char c[strlen(SPORK_FUNC_PREFIX) + num_digit(pos.first.line) + 1];
index 30a73cd274bb9d310ef38b16b20c1506b85df663..cc5b598beec6fe29a88cd04fa90c129192ba1565 100644 (file)
@@ -41,7 +41,7 @@ ANN static inline m_bit* get_data(MemPool mp, Memoize m) {
 
 INSTR(MemoizeStore) {
   const Memoize m = shred->code->memoize;
-  m_bit* data = get_data(shred->info->vm->gwion->mp, m);
+  m_bit* data = get_data(shred->info->mp, m);
   memcpy(data, shred->mem, m->arg_sz);
   memcpy(data + m->arg_sz, shred->reg - m->ret_sz, m->ret_sz);
 }
index ba652879253360820bc4f9506ae1206d33f09ecd..0a2164cfbb5e602a52cb0b4b7b385265bb4ad9f0 100644 (file)
@@ -268,7 +268,7 @@ static INSTR(ArraySlice) {
     handle(shred, "OutOfBoundsArraySliceException");
     return;
   }
-  const M_Object out = new_array(shred->info->vm->gwion->mp, array->type_ref, sz);
+  const M_Object out = new_array(shred->info->mp, array->type_ref, sz);
   for(m_int i = start, j = 0; i != end; i += op, ++j) {
     m_bit buf[ARRAY_SIZE(in)];
     m_vector_get(in, i, &buf);
@@ -521,7 +521,7 @@ static INSTR(count_run_end) {
 
 static MFUN(vm_vector_map) {
   const m_uint offset = *(m_uint*)REG(SZ_INT*3);
-  const M_Object ret = new_array(shred->info->vm->gwion->mp, o->type_ref, ARRAY_LEN(ARRAY(o)));
+  const M_Object ret = new_array(shred->info->mp, o->type_ref, ARRAY_LEN(ARRAY(o)));
   vector_add(&shred->gc, (m_uint)ret);
   if(ARRAY_LEN(ARRAY(o))) {
     _init(shred, &map_run_code, offset, SZ_INT);
@@ -533,7 +533,7 @@ static MFUN(vm_vector_map) {
 static MFUN(vm_vector_compactmap) {
   const VM_Code code = *(VM_Code*)REG(SZ_INT*2);
   const m_uint offset = *(m_uint*)REG(SZ_INT*3);
-  const M_Object ret = new_array(shred->info->vm->gwion->mp,
+  const M_Object ret = new_array(shred->info->mp,
     code->ret_type, 0);
   vector_add(&shred->gc, (m_uint)ret);
   if(ARRAY_LEN(ARRAY(o))) {
@@ -545,7 +545,7 @@ static MFUN(vm_vector_compactmap) {
 
 static MFUN(vm_vector_filter) {
   const m_uint offset = *(m_uint*)REG(SZ_INT*3);
-  const M_Object ret = new_array(shred->info->vm->gwion->mp, o->type_ref, 0);
+  const M_Object ret = new_array(shred->info->mp, o->type_ref, 0);
   vector_add(&shred->gc, (m_uint)ret);
   if(ARRAY_LEN(ARRAY(o))) {
     _init(shred, &filter_run_code, offset, SZ_INT);
index 016d6e638d597e8cbef62096e020bad4c8d67128..ef48b4d4297ba20fc769c4e0e71dc200fe51b2fc 100644 (file)
@@ -192,7 +192,7 @@ static TICK(usrugen_tick) {
 }
 
 static CTOR(usrugen_ctor) {
-  struct UUGen_* uu = mp_calloc(shred->info->vm->gwion->mp, UUGen);
+  struct UUGen_* uu = mp_calloc(shred->info->mp, UUGen);
   uu->self = o;
   ugen_ini(shred->info->vm->gwion, UGEN(o), 1, 1);
   ugen_gen(shred->info->vm->gwion, UGEN(o), id_tick, uu, 0);
@@ -202,7 +202,7 @@ static DTOR(usrugen_dtor) {
   struct UUGen_ *uu = UGEN(o)->module.gen.data;
   if(uu->shred)
     free_vm_shred(uu->shred);
-  mp_free(shred->info->vm->gwion->mp, UUGen, UGEN(o)->module.gen.data);
+  mp_free(shred->info->mp, UUGen, UGEN(o)->module.gen.data);
 }
 
 static OP_CHECK(opck_usrugen) {
@@ -262,10 +262,10 @@ static INSTR(UsrUGenTick) {
     handle(shred, "NullTickException");
     return;
   }
-  uu->shred = new_vm_shred(shred->info->vm->gwion->mp, *(VM_Code*)(shred->reg-offset));
+  uu->shred = new_vm_shred(shred->info->mp, *(VM_Code*)(shred->reg-offset));
   vmcode_addref(*(VM_Code*)(shred->reg - offset));
   uu->shred->info->vm = shred->info->vm;
-  code_prepare(vmcode_callback(shred->info->vm->gwion->mp, uu->shred->code));
+  code_prepare(vmcode_callback(shred->info->mp, uu->shred->code));
   shreduler_ini(uu->shred->info->vm->shreduler, uu->shred);
   uu->prep = instr->m_val ? member_prep : global_prep;
   *(M_Object*)(shred->reg - SZ_INT) = o;
index 38375143eac1e5f11ab706b1886d7497f5b2b097..fec7d7bae4b2488680a1aef195460ec48407747c 100644 (file)
@@ -150,7 +150,7 @@ static INSTR(IntRange) {
   const m_int end   = *(m_int*)REG(0);
   const m_int op    = start < end ? 1 : -1;
   const m_uint sz    = op > 0 ? end - start : start - end;
-  const M_Object array = new_array(shred->info->vm->gwion->mp, (Type)instr->m_val, sz);
+  const M_Object array = new_array(shred->info->mp, (Type)instr->m_val, sz);
   for(m_int i = start, j = 0; i != end; i += op, ++j)
     m_vector_set(ARRAY(array), j, &i);
   *(M_Object*)REG(-SZ_INT) = array;
index 2e8372bf0cb61bc6ae68edbf20386a4719c7f5a7..8acf522bdaeb98bf947e8bb475767aa2bf7b98c9 100644 (file)
@@ -49,11 +49,11 @@ opck_str(eq, !strcmp(bin->lhs->d.prim.d.str, bin->rhs->d.prim.d.str))
 opck_str(neq, strcmp(bin->lhs->d.prim.d.str, bin->rhs->d.prim.d.str))
 
 static CTOR(string_ctor) {
-  STRING(o) = _mp_calloc(shred->info->vm->gwion->mp, 1);
+  STRING(o) = _mp_calloc(shred->info->mp, 1);
 }
 
 static DTOR(string_dtor) {
-  free_mstr(shred->info->vm->gwion->mp, STRING(o));
+  free_mstr(shred->info->mp, STRING(o));
 }
 
 ID_CHECK(check_funcpp) {
@@ -93,7 +93,7 @@ static INSTR(StringSlice) {
   for(m_int i = start, j = 0; i != end; i += op, ++j)
     c[j] = str[i];
   c[sz] = '\0';
-  *(M_Object*)REG(-SZ_INT) = new_string(shred->info->vm->gwion->mp, shred, c);
+  *(M_Object*)REG(-SZ_INT) = new_string(shred->info->mp, shred, c);
 }
 
 static MFUN(string_len) {
@@ -106,7 +106,7 @@ static MFUN(string_upper) {
   for(m_uint i = 0; i < strlen(c); i++)
     if(c[i]  >= 'a' && c[i] <= 'z')
       c[i] += 'A' - 'a';
-  *(M_Object*)RETURN = new_string(shred->info->vm->gwion->mp, shred, c);
+  *(M_Object*)RETURN = new_string(shred->info->mp, shred, c);
 }
 
 static MFUN(string_lower) {
@@ -115,7 +115,7 @@ static MFUN(string_lower) {
   for(m_uint i = 0; i < strlen(c); i++)
     if(c[i]  >= 'A' && c[i] <= 'Z')
       c[i] -= 'A' - 'a';
-  *(M_Object*)RETURN = new_string(shred->info->vm->gwion->mp, shred, c);
+  *(M_Object*)RETURN = new_string(shred->info->mp, shred, c);
 }
 
 static MFUN(string_ltrim) {
@@ -125,7 +125,7 @@ static MFUN(string_ltrim) {
     i++;
   char c[strlen(str) - i + 1];
   strcpy(c, STRING(o) + i);
-  *(M_Object*)RETURN = new_string(shred->info->vm->gwion->mp, shred, c);
+  *(M_Object*)RETURN = new_string(shred->info->mp, shred, c);
 }
 
 static MFUN(string_rtrim) {
@@ -138,7 +138,7 @@ static MFUN(string_rtrim) {
     char c[len + 2];
     strncpy(c, str, len + 1);
     c[len + 1] = '\0';
-    *(M_Object*)RETURN = new_string(shred->info->vm->gwion->mp, shred, c);
+    *(M_Object*)RETURN = new_string(shred->info->mp, shred, c);
   } else {
     ++o->ref;
     *(M_Object*)RETURN = o;
@@ -168,7 +168,7 @@ static MFUN(string_trim) {
   for(i = start; i < len - end; i++)
     c[i - start] = str[i];
   c[len - start - end ] = '\0';
-  *(M_Object*)RETURN = new_string(shred->info->vm->gwion->mp, shred, c);
+  *(M_Object*)RETURN = new_string(shred->info->mp, shred, c);
 }
 
 static MFUN(string_charAt) {
@@ -217,7 +217,7 @@ static MFUN(string_insert) {
   for(i = index; i < (m_int)len; i++)
     c[i + len_insert] = str[i];
   c[len + len_insert] = '\0';
-  *(M_Object*)RETURN = new_string(shred->info->vm->gwion->mp, shred, c);;
+  *(M_Object*)RETURN = new_string(shred->info->mp, shred, c);;
 }
 
 static MFUN(string_replace) {
@@ -243,7 +243,7 @@ static MFUN(string_replace) {
   for(i = 0; i < len_insert; i++)
     c[i + index] = insert[i];
   c[index + len_insert] = '\0';
-  *(M_Object*)RETURN = new_string(shred->info->vm->gwion->mp, shred, c);;
+  *(M_Object*)RETURN = new_string(shred->info->mp, shred, c);;
 }
 
 static MFUN(string_replaceN) {
@@ -272,7 +272,7 @@ static MFUN(string_replaceN) {
   for(i = index + _len; i < (m_int)len; i++)
     c[i] = str[i];
   c[len + _len - 1] = '\0';
-  *(M_Object*)RETURN = new_string(shred->info->vm->gwion->mp, shred, c);;
+  *(M_Object*)RETURN = new_string(shred->info->mp, shred, c);;
 }
 
 static MFUN(string_find) {
index 9908ea12e84aa97ef954e1376ac252f14e450714..f6ccf9218aea6836bacdbfa2cc702bf5e2502a77 100644 (file)
@@ -292,7 +292,7 @@ ANN static void release_multi(const UGen ug, const VM_Shred shred) {
 
 static DTOR(ugen_dtor) {
   const UGen ug = UGEN(o);
-  MemPool p = shred->info->vm->gwion->mp;
+  MemPool p = shred->info->mp;
   vector_rem2(&shred->info->vm->ugen, (vtype)ug);
   if(!ug->multi)
     release_mono(p, ug);
index a826bbc0fcb4c4605ac1ad28964e9a19935cc788..2ea352d5c6bb5293395d9bbf82d988d43cbb8faf 100644 (file)
@@ -138,7 +138,7 @@ static INSTR(UnionCtor) {
   POP_REG(shred, instr->m_val2);
   POP_REG(shred, SZ_INT);
   const m_uint index = *(m_uint*)REG(-SZ_INT);
-  const M_Object o = *(M_Object*)REG(-SZ_INT) = new_object(shred->info->vm->gwion->mp, NULL, (Type)instr->m_val);
+  const M_Object o = *(M_Object*)REG(-SZ_INT) = new_object(shred->info->mp, NULL, (Type)instr->m_val);
   *(m_uint*)o->data = index;// + 1;
   memcpy(o->data + SZ_INT, REG(0), instr->m_val2);
 }
index fe4d086b9c15c029ef1a62e5c1d51876d18031e5..938b76224c2bdcd4b086b32f334dec76f4a04508 100644 (file)
@@ -37,7 +37,7 @@ static DTOR(vararg_dtor) {
       offset += t->size;
     }
   }
-  free_vararg(shred->info->vm->gwion->mp, arg);
+  free_vararg(shred->info->mp, arg);
 }
 
 static MFUN(mfun_vararg_cpy) {
index 1aa3ae8927d259be20d1207c07a4b4163c2a3fa1..8b17660115a45211853b6e793117709bd75a1542 100644 (file)
@@ -155,7 +155,6 @@ VM_Code new_vmcode(MemPool p, const Vector instr, const m_uint stack_depth,
   VM_Code code           = mp_calloc(p, VM_Code);
   code->name             = mstrdup(p, name);
   if(instr) {
-//    code->instr            = vector_copy(p, instr);
     vector_init(&code->instr);
     vector_copy2(instr, &code->instr);
     code->bytecode = tobytecode(p, code);
index 19b0b004a22c38da1477708fd69c07acf859811a..aaca8e9f4d515c7892a8c64efe52178ef0b7e82e 100644 (file)
@@ -8,7 +8,7 @@ m_str code_name_set(MemPool p, const m_str name, const m_str file) {
   return str;
 }
 
-m_str code_name(const m_str name, const m_bool b) {
+m_str code_name(const m_str name, const bool b) {
   const m_str str = strchr(name, '$');
   return (b && str) ?  (str + 1) : name;
 }